您的位置:首页 > 编程语言 > Java开发

六.Spring的Bean管理-实例化的方式详解

2017-09-13 08:05 176 查看
写在前面,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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: