spring学习(02)之bean实例化的三种方式

bean实体例化的三种方式

在spring中有三中实例化bean的方式:

一、使用构造器实例化;(通常使用的一个方法,重点)

二、使用静态工厂方法实例化;

三、使用实例化工厂方法实例化

第一种、使用构造器实例化;

这种实例化的方式可能在我们平时的开发中用到的是最多的,因为在xml文件中配置简单并且也不需要额外的工厂类来实现。

比如

<?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">

    <bean id="user" class="cn.lmn.ioc.User"></bean>

</beans>

id是对象的名称,class是要实例化的类。

在这个类里面还要有个无参的构造,不然会出现异常

第二种 使用静态工厂创建

(1)创建静态的方法,返回类对象

package cn.lmn.bean;

public class Bean2Factory {
    //静态方法,返回Bean2对象
    public static Bean2 getBean2(){
        return new Bean2();
    }
}
<?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">

    <!-- <bean id="user" class="cn.lmn.ioc.User"></bean> -->
    <!-- 使用静态工厂创建对象 -->
    <bean id="bean2" class="cn.lmn.bean.Bean2Factory" factory-method="getBean2"></bean>
</beans>

最后测试一下

 1 package cn.lmn.test;
 2
 3 import org.junit.Test;
 4 import org.springframework.context.ApplicationContext;
 5 import org.springframework.context.support.ClassPathXmlApplicationContext;
 6
 7 import cn.lmn.bean.Bean2;
 8 import cn.lmn.ioc.User;
 9
10 public class TestIOC {
11     @Test
12     public void testUser() {
13         // 1加载spring的配置文件,创建对象
14         ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
15         // 2得到配置创建的对象
16     //    User user = (User) context.getBean("user");
17         Bean2 bean2 = (Bean2) context.getBean("bean2");
18         System.out.println(bean2);
19
20     }
21 }

第三种 使用实例工厂创建

(1)创建不是静态的方法,返回类对象

package cn.lmn.bean;

public class Bean3Factory {
    //普通的方法,返回的是Bean2的对象
    public Bean3 getBean3(){
        return new Bean3();
    }
}
<?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">

    <!-- <bean id="user" class="cn.lmn.ioc.User"></bean> -->
    <!-- 使用静态工厂创建对象 -->
    <!-- <bean id="bean2" class="cn.lmn.bean.Bean2Factory" factory-method="getBean2"></bean> -->
    <!-- 使用实例工厂创建对象 -->
    <!-- 创建工厂对象 -->
    <bean id="bean3Factory" class="cn.lmn.bean.Bean3Factory"></bean>
    <bean id="bean3" factory-bean="bean3Factory" factory-method="getBean3"></bean>
</beans>

最后测试一下

 1 package cn.lmn.test;
 2
 3 import org.junit.Test;
 4 import org.springframework.context.ApplicationContext;
 5 import org.springframework.context.support.ClassPathXmlApplicationContext;
 6
 7 import cn.lmn.bean.Bean3;
 8
 9 public class TestIOC {
10     @Test
11     public void testUser() {
12         // 1加载spring的配置文件,创建对象
13         ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
14         // 2得到配置创建的对象
15     //    User user = (User) context.getBean("user");
16         Bean3 bean3 = (Bean3) context.getBean("bean3");
17         System.out.println(bean3);
18
19     }
20 }

原文地址:https://www.cnblogs.com/limn/p/8406969.html

时间: 2024-10-14 22:04:10

spring学习(02)之bean实例化的三种方式的相关文章

Spring bean管理器 bean实例化的三种方式

bean实例化的三种方式实现 第一种:使用类的无参数构造方法创建(常用 重要) 第一种实例化方式最常用,实例化类时会通过调用无参构造方法创建.示例代码如下: package spring.com.UserService; public class UserService { public UserService() { //该方法是无参方法 } public void AddUser(){ System.out.println("Add........................."

spring中创建bean对象的三种方式以及作用范围

时间:2020/02/02 一.在spring的xml配置文件中创建bean对象的三种方式: 1.使用默认构造函数创建.在spring的配置文件中使用bean标签,配以id和class属性之后,且没有其他属性和标签时采用的就是默认构造函数创建bean对象,此时如果类中没有默认构造函数函数,则对象无法创建. <bean id="one" class="sdnu.machi.one"></bean> 如果one.class中没有默认构造函数则会报

Spring的依赖注入(DI)三种方式

Spring依赖注入(DI)的三种方式,分别为: 1.  接口注入 2.  Setter方法注入 3.  构造方法注入 下面介绍一下这三种依赖注入在Spring中是怎么样实现的. 首先我们需要以下几个类: 接口 Logic.java 接口实现类 LogicImpl.java 一个处理类 LoginAction.java 还有一个测试类 TestMain.java Logic.java如下: package com.spring.test.di; public interface Logic {

Spring依赖注入(DI)的三种方式

Spring依赖注入(DI)的三种方式 Spring依赖注入(DI)的三种方式,分别为: 1. 接口注入 2. Setter方法注入 3. 构造方法注入 下面介绍一下这三种依赖注入在Spring中是怎么样实现的. 首先我们需要以下几个类: 接口 Logic.java 接口实现类 LogicImpl.java 一个处理类 LoginAction.java 还有一个测试类 TestMain.java Logic.java如下: package com.spring.test.di? public i

Spring:Spring-IOC实例化bean的常用三种方式

Spring容器提供了三种对bean的实例化方式: 1)构造器实例化 public class Demo { private String name; //getter和setter方法略 } <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http:

Spring Bean定义的三种方式

一.基于XML的配置 适用场景: Bean实现类来自第三方类库,如:DataSource等 需要命名空间配置,如:context,aop,mvc等 <beans> <import resource="resource1.xml" />//导入其他配置文件Bean的定义 <import resource="resource2.xml" /> <bean id="userService" class=&quo

SSH深度历险(八) 剖析SSH核心原理+Spring依赖注入的三种方式

在java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中.依赖注入的另一种说法是"控制反转",通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员,而控制反转是指new实例工作不由我们程序员来做而是交给spring容器来做. Spring依赖注入(

Spring依赖注入的三种方式

Spring依赖注入(DI)的三种方式,分别为: 1. 接口注入 2. Setter方法注入 3. 构造方法注入 下面介绍一下这三种依赖注入在Spring中是怎么样实现的. 首先我们需要以下几个类: 接口 Logic.java 接口实现类 LogicImpl.java 一个处理类 LoginAction.java 还有一个测试类 TestMain.java Logic.java如下: package com.spring.test.di; public interface Logic { pub

详解android解析Xml的三种方式——DOM、SAX以及XMLpull

今天学习了android解析Xml的三种方式——DOM.SAX以及XMLpull,这里对它们进行总结. 如果理解有误,欢迎指正   ^_* 一.DOM方式解析: xml是先把xml文档都读到内存中,然后再用DOM API来访问树形结构,并获取数据.这个写起来很简单,但是很消耗内存.要是数据过大,手机不够牛逼,可能手机直接死机. 常用的DoM接口和类: Document:该接口定义分析并创建DOM文档的一系列方法,它是文档树的根,是操作DOM的基础.Element:该接口继承Node接口,提供了获