Spring中的@Resource注解执行过程
2017-09-12 11:15
344 查看
首先,我们先写一个简单的例子,这样看起来更清楚一点:
1. 写两个类Student和Person类
Student类
public class Student {
public void say() {
System.out.println("This is a student!");
}
}
Person类
import javax.annotation.Resource;
public class Person {
@Resource(name="student")
Student student;
public void sayPerson() {
this.student.say();
}
}
2. ApplicationContext.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">
<bean id="student" class="spring_ioc_05_di_annotation.Student"></bean>
<bean id="person" class="spring_ioc_05_di_annotation.Person"></bean>
<context:annotation-config/>
</beans>
3. 测试类
public class AnnotationTest {
/**
* 执行过程:
* 1.启动加载spring容器
* 2.将Spring容器中的bean实例化(Person,student)
* 3.当spring容器执行到解析配置文件处时
* <context:annotation-config/>
* spring容器会在纳入spring管理的bean的范围内查找哪些类的属性上是否加有@Resource注解
* 4.如果在属性上找到@Resource注解
* 如果@Resource的注解name属性为""
* 则把@Resource所在的属性的名称和Spring容器中的id作匹配
* 如果匹配成功,则赋值
* 如果匹配不成功,则会按照类型进行配置
* 如果匹配成功,则赋值;匹配不成功,报错
* 如果@Resource的注解的name的值不为""
* 则解析@Resource注解name属性的值,把值和spring容器中的ID进行呢匹配
* 如果匹配成功,则赋值
* 如果匹配不成功,则报错
*
* 说明:
* 注解代码越来越简单,效率越来越低
*/
@Test
public void TestPerson() {
ApplicationContext context =
new ClassPathXmlApplicationContext("applicationContext.xml");
Person person = (Person) context.getBean("person");
person.sayPerson();
}
}
1. 写两个类Student和Person类
Student类
public class Student {
public void say() {
System.out.println("This is a student!");
}
}
Person类
import javax.annotation.Resource;
public class Person {
@Resource(name="student")
Student student;
public void sayPerson() {
this.student.say();
}
}
2. ApplicationContext.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">
<bean id="student" class="spring_ioc_05_di_annotation.Student"></bean>
<bean id="person" class="spring_ioc_05_di_annotation.Person"></bean>
<context:annotation-config/>
</beans>
3. 测试类
public class AnnotationTest {
/**
* 执行过程:
* 1.启动加载spring容器
* 2.将Spring容器中的bean实例化(Person,student)
* 3.当spring容器执行到解析配置文件处时
* <context:annotation-config/>
* spring容器会在纳入spring管理的bean的范围内查找哪些类的属性上是否加有@Resource注解
* 4.如果在属性上找到@Resource注解
* 如果@Resource的注解name属性为""
* 则把@Resource所在的属性的名称和Spring容器中的id作匹配
* 如果匹配成功,则赋值
* 如果匹配不成功,则会按照类型进行配置
* 如果匹配成功,则赋值;匹配不成功,报错
* 如果@Resource的注解的name的值不为""
* 则解析@Resource注解name属性的值,把值和spring容器中的ID进行呢匹配
* 如果匹配成功,则赋值
* 如果匹配不成功,则报错
*
* 说明:
* 注解代码越来越简单,效率越来越低
*/
@Test
public void TestPerson() {
ApplicationContext context =
new ClassPathXmlApplicationContext("applicationContext.xml");
Person person = (Person) context.getBean("person");
person.sayPerson();
}
}
相关文章推荐
- Spring @Resource、@Autowired、@Qualifier的注解注入及区别
- Struts+Spring+Hibernate的Web应用执行过程
- Spring @Autowired @Resource @Inject 注解使用方法及区别总结
- Spring注解@Resource和@Autowired区别对比
- Spring系列【06】@Resource注解实现Bean的注入
- Spring注解@Resource和@Autowired区别对比
- Spring @Autowired,@Resource,@Required注解的用法和作用
- Spring中@Autowired注解、@Resource注解的区别
- spring autoWire注解和@resource注解区别
- 深入探索spring技术内幕(四): 剖析@Resource注解实现原理与注解注入
- Spring注解@Component、@Repository、@Service、@Controller @Resource、@Autowired、@Qualifier 解析
- Spring注解@Component、@Repository、@Service、@Controller @Resource、@Autowired、@Qualifier 解析
- spring @Resource与@Autowired注解详解
- Spring中@Autowired注解、@Resource注解的区别
- Spring注解@Resource和@Autowired区别对比
- shiro和Spring整合使用注解时没有执行realm的doGetAuthorizationInfo回调方法的解决
- Spring MVC framework 执行过程
- 使用spring @Scheduled注解执行定时任务、
- Spring 注解 @Resource和@Autowired
- Spring注解:@Resource、@PreConstruct、@PreDestroy、@Component