1、component
package Class_Scan_Annotation;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* Created by Administrator on 2019/6/1.
*/
@Component("person")
public class Person {
@Resource(name = "student")
// @Autowired 按照类型匹配
// @Qualifier("student") 按照name匹配
private Student student;
public Student getStudent() {
return student;
}
}
2、component
package Class_Scan_Annotation;
import org.springframework.stereotype.Component;
/**
* Created by Administrator on 2019/5/29.
*/
@Component("student")
public class Student {
public void say() {
System.out.println("你好学生!");
}
}
3、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-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<!--
component:把一个类放入到Spring容器中,该类就是一个component
在base-package指定的包及子包下 扫描 所有的类
-->
<context:component-scan base-package="Class_Scan_Annotation"></context:component-scan>
</beans>
4、单元测试
package Class_Scan_Annotation;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class AnnotationTest {
@Test
public void testAnnotation() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("Class_Scan_Annotation/DI_Annotation.xml");
Person person = (Person) context.getBean("person");
person.getStudent().say();
}
}
5、输出
学生你好
6、原理
* 原理
* 1、启动spring容器,spring容器解析配置文件
* 2、当解析到 <context:component-scan base-package="Class_Scan_Annotation"></context:component-scan>
* 就会在上面指定的包及子包中扫描所有的类,看那些类上面有@component注解
* 3、如果有component注解,则由如下的规则
* @component
* public class PersionDaoImpl{
*
* }
* ==
* <bean id="persionDaoImpl" class ="XXXX"></bean>
* id的值,把类的第一个字母变成小写,其他的字母不变
* @component(name="persionDao")
* public class PersionDaoImpl{
*
* }
* ==
* <bean id="persionDao" class ="XXXX"></bean>
- 4、之后按照@Resource的注解股则进行匹配## @Resource注解规则