Spring注入方式:
1.属性注入 (不推荐)
字段直接注入,单元测试时难以模拟依赖需要@Mock bean 来模拟依赖
@Service public class TestService(){ ... } @RestController public void TestController(){ @Autowired private TestService testService; ... }
2 构造器注入(推荐)
不可变性:因为时构造器中,对象一旦确定,其依赖关系就被去顶
@Service public class TestService(){ ... } @RestController public void TestController(){ private TestService testService; @Autowired public TestController(TestService testService){ this.testService=testService } ... }
3 setter注入(较推荐)
@Service public class TestService(){ ... } @RestController public void TestController(){ private TestService testService; @Autowired public voiid setTestService(TestService testService){ this.testService=testService } ... }
@Autowired和@Resource区别
1.注入方式
@Autowired支持属性注入、构造器注入和setter注入,@Resource只支持属性注入和setter注入
2. 查找方式
@Autowired是现根据type查找,如果有多个bean对应这个type再根据name查找,此时需要在@Autowired下添加@Qualifier来确定是哪个bean
@Resource查找注入方式是先根据name查找,如果根据name找不到再根据type查找
@Resource(name = "userinfo", type = UserInfo.class) private UserInfo user;
3 来源
@Autowired是Spring中注解 @Resource是Java中注解
浙公网安备 33010602011771号