在spring中,bean的示例化有三种方式。

1、使用类的无参构造函数创建

2、使用静态工厂方式创建

3、使用实例化工厂方式创建。

具体代码如下

静态工厂方式:

Bean2.java

package cn.itcast.bean;

public class Bean2 {

    public void add(){
System.out.println("Bean2................");
}
}

Bean2Factory.java

package cn.itcast.bean;

public class Bean2Factory {
//静态方法,返回Bean2对象 public static Bean2 getBean2(){
return new Bean2();
}
}

IoC方式:

user.java

package cn.itcast.ioc;

public class User {

    public void add(){
System.out.println("add........");
} }

实例化工厂方式:

Bean3.java

package cn.itcast.bean;

public class Bean3 {

    public void add(){
System.out.println("Bean3................");
}
}

Bean3Factory.java

package cn.itcast.bean;

public class Bean3Factory {
public Bean3 getBean3(){
return new Bean3();
}
}

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"> <!-- ioc入门 -->
<bean id="user" class="cn.itcast.ioc.User"></bean> <!-- 使用静态工厂类创建对象 -->
<bean id="Bean2" class="cn.itcast.bean.Bean2Factory" factory-method="getBean2"></bean> <!-- 使用实例工厂创建对象 -->
<bean id="Bean3Factory" class="cn.itcast.bean.Bean3Factory"></bean>
<bean id="Bean3" factory-bean="Bean3Factory" factory-method="getBean3"></bean>
</beans>

测试类:

package cn.itcast.ioc;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import cn.itcast.bean.Bean2;
import cn.itcast.bean.Bean3; public class TestIOC { @Test
public void testUser() { // 1 加载spring配置文件。根据创建对象
ApplicationContext context = new ClassPathXmlApplicationContext(
"bean1.xml"); //2 得到配置创建的文件 ioc
User user = (User)context.getBean("user") ;
System.out.println(user); user.add(); //使用静态工厂类创建对象
Bean2 bean2 =(Bean2)context.getBean("Bean2");
System.out.println(bean2);
bean2.add() ; // 使用实例工厂创建对象
Bean3 bean3 = (Bean3) context.getBean("Bean3");
System.out.println(bean3);
bean3.add();
}
}

运行测试类,结果显示

spring-bean实例化三种方式的更多相关文章

  1. Spring学习之实例化bean的三种方式

    实例化bean的三种方式 构造器实例化bean Person.java public class Person { private String name; private Integer age; ...

  2. spring创建bean的三种方式

    spring创建bean的三种方式: 1通过构造方法创建bean(最常用) 1.1 spring默认会通过无参构造方法来创建bean,如果xml文件是这样配置,则实体类中必须要有无参构造方法,无参构造 ...

  3. spring Bean的三种配置方式

    Spring Bean有三种配置方式: 传统的XML配置方式 基于注解的配置 基于类的Java Config 添加spring的maven repository <dependency> ...

  4. spring配置datasource三种方式

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp34 spring配置datasource三种方式 1.使用org.spri ...

  5. Solon 开发,三、构建一个Bean的三种方式

    Solon 开发 一.注入或手动获取配置 二.注入或手动获取Bean 三.构建一个Bean的三种方式 四.Bean 扫描的三种方式 五.切面与环绕拦截 六.提取Bean的函数进行定制开发 七.自定义注 ...

  6. Spring实战(三)Spring中装配Bean的三种方式---XML、JavaConfig、AutoWire

    创建应用对象之间协作关系的行为称为装配(wiring),这也是依赖注入的本质. Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系,而开发者需要告诉Spring需要创建哪些 ...

  7. Spring依赖注入三种方式详解

    在讲解Spring依赖注入之前的准备工作: 下载包含Spring的工具jar包的压缩包 解压缩下载下来的Spring压缩包文件 解压缩之后我们会看到libs文件夹下有许多jar包,而我们只需要其中的c ...

  8. Spring笔记03(Spring创建对象的三种方式)

    1.创建对象的三种方式和bean的生命周期的验证: Animal接口代码: package cn.pb.dao; /** * 动物接口 */ public interface Animal { //吃 ...

  9. spring配置datasource三种方式及具体信息

    1.使用org.springframework.jdbc.datasource.DriverManagerDataSource说明:DriverManagerDataSource建立连接是只要有连接就 ...

  10. Spring创建对象的三种方式以及创建时间

    创建对象的三种方式: 1.采用默认的构造函数创建 2.采用静态工厂方法 1.写一个静态工厂方法类 public class HelloWorldFactory { public static Hell ...

随机推荐

  1. Java 泛型通配符

    package com.waston; import java.util.*; public class Main { public static void main(String[] args) { ...

  2. Python黑客——快速编写信息收集器

    i春秋作家:大木瓜 环境:Python 3模块:LxmlRequestBeautifulsoup开始:首先看一下目标站: http://gaokao.chsi.com.cn/gkxx/zszcgd/d ...

  3. Dubbo原理实现之代理接口的定义

    Dubbo有很多的实现采用了代码模式,Dubbo由代理工厂ProxyFactory对象创建代理对象. ProxyFactory接口的定义如下: @SPI("javassist") ...

  4. MySQL字符集的设置

    Notice:文章基于ubuntu系统而写 1.关于MySQL字符集 MySQL的字符集支持(Character Set Support)有两个方面: 字符集(Character set)和排序方式( ...

  5. SQL 一对多联表查询最大值

    有两个数据表City表和Price表,CIty表的结构如下: Price表的结构如下: 查询每个城市最大的销售价格,并以最大价格进行降序排列,选取前5条记录,SQL语句的代码如下: * from (s ...

  6. Mac系统安装和卸载brew包管理

    brew 的官网地址  https://brew.sh/ 1.brew的安装 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercon ...

  7. [原创]Chorme密码读取工具\Firefox密码读取工具

    工具: getBrowserPWD编译: VC作者: K8哥哥博客: http://qqhack8.blog.163.com发布: 2017/11/24 16:16:17 简介: 有时为了方便我们会让 ...

  8. 【sping揭秘】3、Spring容器中bean默认是保持一个实例

    Spring容器中bean默认是保持一个实例 这里做一个测试,基础代码 package cn.cutter.start.provider; import org.springframework.con ...

  9. BIND DNS拒绝服务漏洞 CVE-2016-2776修复

    接到此漏洞之后,略微查了一下相关描述,发现漏洞影响范围很大,可能造成的影响也很严重,于是着手进行修复. 漏洞的详细信息可见如下链接: http://www.cnvd.org.cn/flaw/show/ ...

  10. How To Scan QRCode For UWP (1)

    本文将介绍实现一个类似于微信扫一扫功能的UI界面,后续会再实现具体的识别二维码的功能. 实例使用的Win10 SDK Version是Windows 10 Anniversary Edition(10 ...