这个配置隐式注册了多个对注释进行解析处理的处理器:AutowiredAnnotationBeanPostProcessor,CommonAnnotationBeanPostProcessor,PersistenceAnnotationBeanPostProcessor,RequiredAnnotationBeanPostProcessor 注: @Resource注解在spring安装目录的lib\j2ee\common-annotations.jar
2、在java代码中使用@Autowired或@Resource注解方式进行装配,这两个注解的区别是:@Autowired 默认按类型装配,@Resource默认按名称装配,当找不到与名称匹配的bean才会按类型装配。
@Autowired
private PersonDao personDao;//用于字段上
@Autowired
public void setOrderDao(OrderDao orderDao) {//用于属性的setter方法上
this.orderDao = orderDao;
}
@Autowired注解是按类型装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它required属性为false。如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。如下:
@Autowired @Qualifier("personDaoBean")
private PersonDao personDao;
@Resource注解和@Autowired一样,也可以标注在字段或属性的setter方法上,但它默认按名称装配。名称可以通过@Resource的name属性指定,如果没有指定name属性,当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象,当注解标注在属性的setter方法上,即默认取属性名作为bean名称寻找依赖对象。
@Resource(name=“personDaoBean”)在配置文件上id="personDaoBean"
private PersonDao personDao;//用于字段上
注意:
如果没有指定name属性,并且按照默认的名称仍然找不到依赖对象时, @Resource注解会回退到按类型装配。但一旦指定了name属性,就只能按名称装配了。
推荐用@Resource
它是属于javax.anonotion.Resource,在jdk6已经存在,是j2ee里不依赖于spring
用注解连set方法都不用写
- package cn.itcast.service.impl;
- import javax.annotation.Resource;
- import cn.itcast.dao.PersonDao;
- import cn.itcast.service.PersonService;
- public class PersonServiceBean implements PersonService {
- @Resource(name="personDaoxxxx")
- private PersonDao personDao;
- private String name;
- public PersonServiceBean(){}
- public void save(){
- //System.out.println(name);
- personDao.add();
- }
- }
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns=""
- xmlns:xsi=""
- xmlns:context=""
- xsi:schemaLocation="
- /spring-beans-2.5.xsd
- /spring-context-2.5.xsd">
-
- <context:annotation-config/>
-
- <bean id="personDaoxxxx" class="cn.itcast.dao.impl.PersonDaoBean"></bean>
- <bean id="personService" class="cn.itcast.service.impl.PersonServiceBean"/>
- </beans>
- public class SpringTest {
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
- }
- @Test public void instanceSpring(){
- ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
- PersonService personService = (PersonService)ctx.getBean("personService");
- personService.save();
- //ctx.close();
-
- }
- }