美文网首页
spring学习(2)-对象创建的细节

spring学习(2)-对象创建的细节

作者: 梦落迹南天 | 来源:发表于2018-07-04 17:05 被阅读0次

1. id 和 name

<bean name="p" id="p" class="xxxxx"> </bean>

name : 可重复的,可以有特殊字符的
id: 不可重复的,不可有特殊字符的

2. 工厂的类型

ClassPathXmlApplicationContext

参数为文件名,处理的时候是有添加默认的类路径的,类路径即classPath,一般是定位到项目的bin文件和引用的包,可以使用java.class.path查看

//下面的参数等价于classPath:application.xml
ApplicationContext context = new ClassPathXmlApplicationContext("application.xml");

FileSystemXmlApplicationContext

参数为包含文件路径的文件名,处理的时候有添加默认的文件路径,一般是定位到项目文件夹,可以输出System.getProperty("user.dir")进行查看

//下面的参数等价于File:src\\applicatioin.xml
ApplicationContext context = new FileSystemXmlApplicationContext("src\\applicatioin.xml");

3. 单例和多例

单例模式

配置文件中scope的属性值默认为"singleton",产生的类对象都是单例模式的

<!--下述两种配置相等-->
 <bean name="p" class="com.woder.spring.pojo.Person"  scope="singleton"></bean>
 <bean name="p" class="com.woder.spring.pojo.Person" ></bean>
        
public class IOCTest {
    @Test
    public void testScpe() {
        //创建容器
        ApplicationContext context = new ClassPathXmlApplicationContext("application.xml");
        //创建对象
        Person p1 = (Person)context.getBean("p");
        Person p2 = (Person)context.getBean("p");
        // true
        System.out.println(p1==p2);
    }
}

容器启动时创建对象,设置lazy-init="true"后,变成创建对象时才创建。

多例模式

scope="prototype" 变成多例模式,容器启动时不创建对象,创建对象的时候才创建对象

<bean name="p" class="com.woder.spring.pojo.Person" scope="prototype" ></bean>
public class IOCTest {
    @Test
    public void testScpe() {
        //创建容器
        ApplicationContext context = new ClassPathXmlApplicationContext("application.xml");
        //生产对象
        Person p1 = (Person)context.getBean("p");
        Person p2 = (Person)context.getBean("p");
        // false  
        System.out.println(p1==p2);
    }
}

5. 对象的初始化和销毁方法

<bean name="p" class="com.woder.spring.pojo.Person"  init-method="init" destroy-method="destroy()" ></bean>

通过设置init-method和destroy-method可以设置初始化方法和销毁方法
初始化方法早生成对象的时候会调用
而销毁的方法需要通过两种方式调用

//使用抽象容器调用destroy()
AbstractApplicationContext context = new ClassPathXmlApplicationContext("application.xml");
//主动调用destroy方法执行销毁
context.destroy();
//或者调用close方法触发
context.close();

相关文章

  • spring学习(2)-对象创建的细节

    1. id 和 name name : 可重复的,可以有特殊字符的id: 不可重复的,不可有特殊字符的 2. 工厂...

  • Spring

    1.Spring 的引入 思考:1)对象的创建能否写死?2)对象创建细节 对象数量:action: 多个 【维...

  • spring_IOC总结(二)--xml依赖注入

    spring的bean对象--依赖注入 spring 创建bean对象细节 配置spring核心容器xml配置文件...

  • Spring知识清单

    1什么是Spring Bean容器? 用于创建bean对象,管理bean对象的那个容器。 2Spring Bean...

  • Spring创建对象

    创建对象 把一个类放入到spring容器中,该类称为bean Spring创建对象的三种方式 1、构造方法 2、静...

  • 超全超简洁SSM知识点总结

    spring spring IOC创建对象的两种方式 1.创建容器对象 2.在当前包的所在类下找有关bean的配置...

  • ssh框架整合

    ssh 整合思想 整合struts2 和spring 把struts2 的action对象创建交给spring进行...

  • AOP

    反射 java创建对象的方法(5种): Spring AOP: spring分为:1、IOC/DI 2、AOPA...

  • AOP

    java创建对象的方法(5种): Spring AOP: spring分为: 1、IOC/DI 2、AOP AOP...

  • Spring学习 一 Struts2 与 Spring 整合

    Struts2框架和Spring整合的关键点就是: 把Struts2框架Action对象的创建,交给Spring ...

网友评论

      本文标题:spring学习(2)-对象创建的细节

      本文链接:https://www.haomeiwen.com/subject/xyvduftx.html