依赖注入
Spring提供了依赖注入的功能,方便我们管理和使用各种Bean,常见的方式有:
- 字段注入(
@Autowired
或@Resource
) - 构造函数注入
- set方法注入
在以往代码中,我们经常利用Spring提供的@Autowired
注解来实现依赖注入:
但是有可能出现空指针异常。
那么给属性加上final修饰,但是@Autowired
注解又不能加载final修饰的属性上,直接报红了。
Spring推荐的是基于构造函数注入,像这样:
这样做的话,OrderServiceImpl对象构造的时候,就会使用有参构造函数,如果这5个对象有为null就会直接报错,会防止项目中使用这些属性的时候出现空指针。
但是,如果需要注入的属性较多,构造函数就会非常臃肿,代码写起来也比较麻烦。
好在Lombok提供了一个注解@RequiredArgsConstructor
,可以帮我们生成构造函数,简化代码:
注意: Lombok 要求 需要注入的对象必须使用 final 修饰
这样一来,不管需要注入的字段再多,我们也只需要一个注解搞定:
4.1.4 自动加载原理
spring-boot 项目启动时会自动加载所有jar 中的 META-INF/spring.factories文件,也会自动加载别的模块的META-INF/spring.factories文件完成自动配置
springboot会自动加载META-INF/spring.factories文件里的这些类