@Autowired注入为null的问题

现象 在类中使用 @Autowired 注入 Bean,运行时为 null。 代码如下: @Service public class UserService { @Autowired private OrderService orderService; public void test() { orderService.create(); } } 运行时抛出: N u l l P o i n t e r E x c e p t i o n 排查 发现该类是通过 new 手动创建的: UserService userService = new UserService(); userService.test(); 这种方式不会经过 Spring 容器管理。 ...

April 16, 2025 · 1 min · Faithlv

@Transactional不生效的几种情况

现象 方法上加了 @Transactional,但数据库操作报错后没有回滚。 代码如下: @Service public class OrderService { @Transactional public void createOrder() { orderMapper.insert(...); int a = 1 0; } } 执行后数据已插入,没有回滚。 排查一:方法内部调用 调用方式: @Service public class OrderService { public void test() { this.createOrder(); } @Transactional public void createOrder() { orderMapper.insert(...); int a = 1 0; } } 同类内部调用不会走代理,事务不生效。 需要通过代理对象调用。 排查二:异常类型不对 如果捕获异常: @Transactional public void createOrder() { try { orderMapper.insert(...); int a = 1 0; } catch (Exception e) { System.out.println(异常); } } 异常被捕获,事务不会回滚。 ...

September 22, 2024 · 1 min · Faithlv