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

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

程序员文章站 2022-05-21 22:54:45
...

写在前面,Bean的实例化,也就产生Bean的对象.

1.Spring中XML 的方式管理Bean(三种)

A.无参数的构造方法的方式 (主要使用)

注意,如果Bean没有无参构造方法,使用该方法会报错.
六.Spring的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

相关标签: spring