今天看到一段代码使用的是 @Resource 的注解,的确是第一次看到这个注解,百度一查才知道,原来和 @AutoWired效果一样,但也有一定的区别。
两个注解都可以用来注入 bean ,@Resource 是JavaEE的注解,@AutoWired是Spring的注解,他俩写的地方是一样的,要么属性名上,要么 setter方法上,但是注入的依据有点不同 :
1 . @AutoWired 默认是按照类型进行装配的,而且要求被注入的 bean 必须存在,如果允许不存在的话,必须加上 required = false 的属性,如:
@AutoWired(required=false) private UserDao userDaoImpl;如果想要根据 bean 的 name 来进行装配,则需要指定 @Qualifier(“bean名字”),如:
@AutoWired @Qualifier("userDaoImpl") private UserDao userDaoImpl;2 . @Resource 默认是按照名字进行装配的,不指定 bean 名字时会自动根据属性名进行注入,当找不到默认的名字的bean时就会根据类型去注入;但是如果指定了 name 属性,则按照指定的 bean 的 name进行注入,不会再根据类型去注入了,如:
//默认按属性名注入 @Resource private UserDao userDaoImpl; //按照指定的 bean的 name注入 @Resource(name="userDaoImpl") private UserDao userDaoImpl;
时间: 2024-10-09 18:52:18