Spring有两个核心接口 BeanFactory和ApplicationContext,其中ApplicationContext是BeanFactory的子接口。 ApplicationContext是Spring容器最常用的接口,该接口有两个实现类 //从类的加载路径下搜索配置文件,并根据配置文件来创建Spring容器 ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml","bean1.xml"); Persion p = ctx.getBean("persion",Persion.class); //使用ClassPathXmlApplication同时加载多个xml文件 ApplicationContext application = new ClassPathXmlApplication("bean.xml","service.xml"); Persion p = ctx.getBean("chinese" , Persion.class); //从文件系统的相对路径或绝对路径下去搜索配置文件 FileSystemXmlApplicationContext ApplicationContext默认会初始化所有的singletonBean可以通过配置文件取消预初始化 可以通过<bean/>元素指定lazy-init = "true"阻止容器预初始化该Bean ————————————————————————————————————————— Spring的国际化支持 ApplicationContext继承MessageSource接口,因而提供国际化支持 ApplicationContext接口继承了MessageSource接口,因此具有国际化功能,当程序创建ApplicationContext容器时,Spring自动查找配置文件中名为messageSouce的Bean实例 ————————————————————————————————————————— 容器Bean的作用域 scope="" singleton prototype request session global session 抽象bean abstract="true" 子Bean无法从父Bean中继承如下属性 depends-on autowire singleton scope lazy-init 这些属性需子Bean定义或采用默认值 parent="父Bean" ————————————————————————————————————————— 容器中Bean的声明周期 Spring可以管理singleton作用域的Bean的声明周期,Spring可以精确的知道该Bean合适被创建,何时被初始化完成,容器何时销毁该Bean。 Spring提供两种方式在Bean属性全部设置成功后执行特定行为 1.使用init-method="init" public void init(){} 2.实现InitializingBean接口 public void afterPropertiesSet(){} 3.<beans default-init-method="init"></beans> 流程 实例化依赖Bean 实例化自身Bean 执行afterPropertiesSet 执行init指定的方法 指定销毁Bean之前指定执行方法 1.destroy-method="" 2.实现DisposableBean接口 实现void destroy() throws Exception{} 7 bean的初期化和销毁 配置文件 <bean id="car" class="com.hzlssd.factory.Car" init-method="init" destroy-method="destroy"> <property name="brand" value="15"></property> </bean> 实体类声明 public class Car{ private String brand; public String getBrand() { return brand; } public void setBrand(String brand) { System.out.println("赋值方法调用"); this.brand = brand; } public Car(){ System.out.println("无参构造器"); } public void init(){ System.out.println("init方法调用"); } public void destroy(){ System.out.println("销毁对象"); } } 调用方法 public class Main { public static void main(String[] args) { ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("bean-Factory.xml"); Car car1 = (Car) ctx.getBean("car"); System.out.println(car1); ctx.destroy(); } } 输出:无参构造器 赋值方法调用 init方法调用 com.hzlssd.factory.Car@2ead5b0c ————————————————————————————————————————— |
|
来自: 擎天猪mpnlajkd > 《Spring》