欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-12-09 20:26:57
一、XML提示的配置1、Schema 的配置一个XML只能被一个dtd约束,但是可以被多个 Schema 约束二、Bean的相关配置1、< bean > 标签的id 和 name 的配置id:使用了约束的唯一约束。不能出现一些特殊字符。name:没有使用约束的唯一约束(理论上是可以重复的,但是实际开发当中是不能出现重复)。里面可以出现特殊字符。Spring和Struts1框架整合的时候< bean id ="/user" class=" " / >Stru...

一、XML提示的配置

1、Schema 的配置

一个XML只能被一个dtd约束,但是可以被多个 Schema 约束
Spring的配置,XML提示的配置,Bean的相关配置

二、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();
	}
}

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

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证明是同一个对象

Spring的配置,XML提示的配置,Bean的相关配置
将bean当中的scope=“singleton”
Spring的配置,XML提示的配置,Bean的相关配置
效果一样说明默认值就是scope=“singleton”
Spring的配置,XML提示的配置,Bean的相关配置

(3)多例模式。

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

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

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

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

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