标签:tor 外部 tom lock javadoc log actor post auto
@Resource,@Autowired,@Inject 这3种都是用来注入bean的,它们属于不同的程序中。详情参见下表:
ANNOTATION | PACKAGE | SOURCE | 作用域 | 实现方式 | 其它 |
---|---|---|---|---|---|
@AutoWired | org.springframework.bean.factory,Spring自带的方式 | Spring 2.5+ | 可以用在构造器、方法、属性、参数、注解上面 | 通过AutowireAnnotationBeanPostProcessor类实现依赖注入 | 注入可以根据名字/类型,可以设置required属性为false指定找不到相应bean时不抛异常 |
@Resource | javax.annotation,是JSR-250标准,JDK6以上自带,Spring版本要求2.5以上 | Java JSR-250 | 可以用在方法、属性、类上 | 通过CommonAnnotationBeanPostProcessor类实现依赖注入 | 与@AutoWired一致。但可以指定name属性来指定beanName,但如果name对应的bean不存在,则会抛出异常,且没有required属性 |
@Inject | javax.inject,是JSR-303标准,Spring版本3以上。需要导入外部依赖 | Java JSR-330 | 可以用在方法、属性、构造器上 | 通过AutowiredAnnotationBeanPostProcessor类实现依赖注入 | 与@AutoWired一致,区别在于@Inject没有required属性 |
2.1 @Inject
如下是@Inject
的使用,不加@Named
注解,需要配置与变量名一致即可。
@Inject @Named("mongo") private Mongo mongo;
2.2 @Autowired
@Autowired
有个属性为required
,可以配置为false,如果配置为false之后,当没有找到相应bean的时候,系统不会抛错。
@Autowired private MongoTemplate mongoTemplate;
2.3 @Resource
@Resource
一般会指定一个name属性,如下
@Resource(name = "testMapper") private TestMapper testMapper;
SpringBoot(十六)@Autowired、@Inject、@Resource
标签:tor 外部 tom lock javadoc log actor post auto
原文地址:https://www.cnblogs.com/toutou/p/9907381.html