Spring的配置,XML提示的配置,Bean的相关配置

    技术2022-07-12  69

    一、XML提示的配置

    1、Schema 的配置

    一个XML只能被一个dtd约束,但是可以被多个 Schema 约束

    二、Bean的相关配置

    1、< bean > 标签的id 和 name 的配置

    id:使用了约束的唯一约束。 不能出现一些特殊字符。

    name:没有使用约束的唯一约束(理论上是可以重复的,但是实际开发当中是不能出现重复)。 里面可以出现特殊字符。

    Spring和Struts1框架整合的时候 < bean id ="/user" class=" " / > Struts1现在很少用所以name和id可以理解为一样的

    class:要生成类的全路径

    2、< bean > 标签生命周期的配置

    init-method :自动执行的初始化方法,Bean被初始化的时候执行的方法 destroy-method:销毁的方法,Bean被销毁的时候执行的方法(Bean必须是单例创建的,工厂关闭)

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- Spring的Bean生命周期的配置 init-method设置该类初始化方法 setup会自动执行 destroy-method 设置要销毁的方法 --> <bean id="customerDAO" class="com.itzheng.spring.demo2.CustomerDAOImpl" init-method="setup" destroy-method="destroy"> </bean> </beans> package com.itzheng.spring.demo2; public interface CustomerDAO { public void save(); } package com.itzheng.spring.demo2; public class CustomerDAOImpl implements CustomerDAO { public void setup() { System.out.println("CustomerDAOImpl被初始化了、、、、、"); } @Override public void save() { // TODO Auto-generated method stub System.out.println("CustomerDAOImpl的save方法执行了。。。。"); } public void destroy() { System.out.println("CustomerDAOImpl被销毁了、、、、、"); } }

    测试:

    package com.itzheng.spring.demo2; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class SpringDemo2 { @Test /* * 生命周期的配置 */ public void demo1() { ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); CustomerDAO customerDAO = (CustomerDAO) applicationContext.getBean("customerDAO"); //customerDAOImpl 当中的SetUp会自动执行 customerDAO.save(); applicationContext.close(); } }

    结果

    3、Bean的作用范围的配置(重点)

    (1)scope:Bean的作用范围

    scope的五个取值: singleton:默认值,Spring会采用单例模式创建该对象。 prototype:多例模式。(在Struts2和Spring整合的时候一定会用到)。

    request:应用在web项目中,Spring创建这个类以后,将这个类传入到request域当中。 session:应用在web项目中,Spring创建这个类以后,将这个类传入到session域当中。 globalsession:应用在web项目中,必须在prolet环境下使用。(在一个地方存入数据以后在子系统当中也拥有该数据)。 如果没有这种环境,配置globalsession就相当于session。

    (2)默认值,Spring会采用单例模式创建该对象。证明测试

    创建两个工厂(测试是否是同一个对象)。

    @Test /* * Bean的作用 */ public void demo2() { ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext( "applicationContext.xml"); CustomerDAO customerDAO1 = (CustomerDAO) applicationContext.getBean("customerDAO"); CustomerDAO customerDAO2 = (CustomerDAO) applicationContext.getBean("customerDAO"); System.out.println(customerDAO1 == customerDAO2); applicationContext.close(); }

    被初始化一次,true证明是同一个对象

    将bean当中的scope=“singleton” 效果一样说明默认值就是scope=“singleton”

    (3)多例模式。

    false证明初始化两次,创建两个对象,因为工厂当中有两个对象

    所以不知道该关闭那个对象,所以没有销毁。

    Processed: 0.009, SQL: 9