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

2022-08-10,,,,

一、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证明初始化两次,创建两个对象,因为工厂当中有两个对象

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

本文地址:https://blog.csdn.net/qq_44757034/article/details/107077319

《Spring的配置,XML提示的配置,Bean的相关配置.doc》

下载本文的Word格式文档,以方便收藏与打印。