@Resource是属于java的
有7个参数
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.12.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
public class Sp{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Sp{" +
"name='" + name + '\'' +
'}';
}
}
@Service
public class Linux {
@Resource
private Sp sp2;
@Override
public String toString() {
return sp2.toString();
}
}
//扫描包使得@service@controller@cmpoment注解生效
@ComponentScan("com.dmg")
@Configuration
public class TestConfig {
@Primary
@Bean
public Sp sp(){
Sp sp=new Sp();
sp.setName("11111");
return sp;
}
@Bean
public Sp sp2(){
Sp sp=new Sp();
sp.setName("222");
return sp;
}
}
public class Test {
public static void main(String[] args) {
AnnotationConfigApplicationContext applicationContext=new AnnotationConfigApplicationContext(TestConfig.class);
Linux bean = applicationContext.getBean(Linux.class);
System.out.println(bean);
}
}
我们虽然在sp上面设置了@Primary注解
但是@Resource还是走的sp2,说明
@Resource不支持这些注解
![](https://img-blog.csdnimg.cn/img_convert/12229fc2a336c95c34ae93dc99a65f00.png)
可以在@Resource的name指定不同的名称,@Resource(name = "sp")
![](https://img-blog.csdnimg.cn/img_convert/658fa823f27e3bae0bd76eea032c5ecf.png)
@Resource就是先根据名称去查询,
如果名称不存在,就报错
![](https://img-blog.csdnimg.cn/img_convert/55526ab38565353b139a27ff3f11904b.png)
我们还可以使用@Inject注解注入到容器中
和@Autowired一个意思
区别就是@Inject没有参数
![](https://img-blog.csdnimg.cn/img_convert/655374f46317cee1a33df6ac074ce9db.png)