六.Spring的Bean管理-实例化的方式详解
写在前面,Bean的实例化,也就产生Bean的对象.
1.Spring中XML 的方式管理Bean(三种)
A.无参数的构造方法的方式 (主要使用)
注意,如果Bean没有无参构造方法,使用该方法会报错.
package cn.com.yves.spring;
public class User {
private String name;
// 注意: 不写构造方法,默认就是无参构造
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
<bean id="user" class="cn.com.yves.spring.User"></bean>
测试方法:
@Test
public void testGeneral() {
// 1 加载spring配置文件,根据配置创建对象
ApplicationContext context = new ClassPathXmlApplicationContext("Application.xml");
// 2 配置文件中的id获取创建的对象
User user = (User) context.getBean("user");
System.out.println(user);
}
B.静态工厂实例化的方式
package cn.com.yves.spring;
public class User2 {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package cn.com.yves.spring;
public class BeanFactory {
public static User2 getUser2() {
return new User2();
}
}
<bean id="user2" class="cn.com.yves.spring.BeanFactory" factory-method="getUser2"></bean>
测试方法:
@Test
public void testStatic() {
// 1 加载spring配置文件,根据配置创建对象
ApplicationContext context = new ClassPathXmlApplicationContext("Application.xml");
// 2 配置文件中的id获取创建的对象
User2 user = (User2) context.getBean("user2");
System.out.println(user);
}
C.实例工厂实例化的方式
package cn.com.yves.spring;
public class User3 {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
<bean id="beanFactory3" class="cn.com.yves.spring.BeanFactory3" ></bean>
<bean id="user3" factory-bean="beanFactory3" factory-method="getUser3"></bean>
测试代码:
@Test
public void testGeneralStatic() {
// 1 加载spring配置文件,根据配置创建对象
ApplicationContext context = new ClassPathXmlApplicationContext("Application.xml");
// 2 配置文件中的id获取创建的对象
User3 user = (User3) context.getBean("user3");
System.out.println(user);
}
Bean标签常用属性
id属性
Bean 起个名字. 在约束中采用 ID 的约束:唯一.必须以字母开始, 可以使用字母、 数字、 连字符、下划线、 句话、 冒号 id:不能出现特殊字符. <bean id="user">
name属性
Bean 起个名字. 没有采用 ID 的约束. name:出现特殊字符.如果没有 id 的话 , name 可以当做 id 使用,也就是说在使用 getBean(name)
方法效果和 getBean(id)
一样.
* 整合 struts1 的时候: <bean name="/loginAction" >
scope属性
Bean 的作用范围.singleton和prototype常用.
singleton :默认值, 单例的.
prototype :多例的.
request :WEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 request 域中.
session :WEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 session 域中.
globalSession :WEB 项目中,应用在 Porlet 环境.如果没有 Porlet 环境那么 globalSession 相当于 session..(有点类似同一登录,但是现在的做法都是用用redis缓存来做.) <bean id="user" scope="prototype">
2.Spring中注解方式管理Bean
上一篇: 表单事件、常用的字符串,数组api
下一篇: Spring源码:工厂方法实例化Bean