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中注解

 

posted on 2025-06-14 15:06  colorfulworld  阅读(65)  评论(0)    收藏  举报