分享

Spring知识点

 擎天猪mpnlajkd 2017-03-18
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

—————————————————————————————————————————




    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多