Spring基础知识

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值