spring 是直接读取字节码解析上面的注解,只要是配置了@compponent ,@service注解的类,都会在spring 被解析和实例化,后面可以直接用Context来获取类实例操作。
通过配置文件 component-scan 和 在类上注解Component来实现最简单配置
包名为: Com.Cn,Bing
配置文件Beans.xml :
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<context:component-scan base-package="Com.Cn.Bing"/>
</beans>
Man文件:
ClassPathResource resource=new ClassPathResource("Beans.xml");
BeanFactory context=new DefaultListableBeanFactory();
BeanDefinitionReader bdr=new XmlBeanDefinitionReader((BeanDefinitionRegistry) context);
bdr.loadBeanDefinitions(resource);
AwareBeanPoscesser ar=new AwareBeanPoscesser();
ar.setBeanFactory(context);
((ConfigurableBeanFactory)context).addBeanPostProcessor(ar);
Student te = (Student) context.getBean("student");
System.out.println(te.toString());
AwareBeanPoscesser 类:
package Com.Cn.Bing;
import org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor;
public class AwareBeanPoscesser extends AutowiredAnnotationBeanPostProcessor {
long i=100;
}
Student类:
@Component
public class Student {
public School school;
public Student() {
}
public void setSchool(School school) {
this.school = school;
}
public String toString() {
return "Student [ school=" + school + "]";
}
}