spring-bean实例化三种方式
在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实例化三种方式的更多相关文章
- Spring学习之实例化bean的三种方式
实例化bean的三种方式 构造器实例化bean Person.java public class Person { private String name; private Integer age; ...
- spring创建bean的三种方式
spring创建bean的三种方式: 1通过构造方法创建bean(最常用) 1.1 spring默认会通过无参构造方法来创建bean,如果xml文件是这样配置,则实体类中必须要有无参构造方法,无参构造 ...
- spring Bean的三种配置方式
Spring Bean有三种配置方式: 传统的XML配置方式 基于注解的配置 基于类的Java Config 添加spring的maven repository <dependency> ...
- spring配置datasource三种方式
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp34 spring配置datasource三种方式 1.使用org.spri ...
- Solon 开发,三、构建一个Bean的三种方式
Solon 开发 一.注入或手动获取配置 二.注入或手动获取Bean 三.构建一个Bean的三种方式 四.Bean 扫描的三种方式 五.切面与环绕拦截 六.提取Bean的函数进行定制开发 七.自定义注 ...
- Spring实战(三)Spring中装配Bean的三种方式---XML、JavaConfig、AutoWire
创建应用对象之间协作关系的行为称为装配(wiring),这也是依赖注入的本质. Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系,而开发者需要告诉Spring需要创建哪些 ...
- Spring依赖注入三种方式详解
在讲解Spring依赖注入之前的准备工作: 下载包含Spring的工具jar包的压缩包 解压缩下载下来的Spring压缩包文件 解压缩之后我们会看到libs文件夹下有许多jar包,而我们只需要其中的c ...
- Spring笔记03(Spring创建对象的三种方式)
1.创建对象的三种方式和bean的生命周期的验证: Animal接口代码: package cn.pb.dao; /** * 动物接口 */ public interface Animal { //吃 ...
- spring配置datasource三种方式及具体信息
1.使用org.springframework.jdbc.datasource.DriverManagerDataSource说明:DriverManagerDataSource建立连接是只要有连接就 ...
- Spring创建对象的三种方式以及创建时间
创建对象的三种方式: 1.采用默认的构造函数创建 2.采用静态工厂方法 1.写一个静态工厂方法类 public class HelloWorldFactory { public static Hell ...
随机推荐
- C++ 执行Windows cmd命令
#include <windows.h> #include <iostream> #include <cstdio> using namespace std; vo ...
- C#6.0语言规范(十七) 特性
许多C#语言使程序员能够指定有关程序中定义的实体的声明性信息.例如,在一个类中的方法的可访问性由与装饰它指定method_modifier小号public,protected,internal,和pr ...
- cisco 的ACL
搞网络好几年了,怎么说呢,水平一直停留在NA-NP之间,系统的学完NA后,做了不少实验,后来也维护了企业的网络,各种网络设备都玩过(在商汤用的Juniper srx 550 我认为在企业环境,非IDC ...
- Dapper实现一对多对象关系聚合导航属性
领域对象:Game(游戏), Room(游戏群),两者一对多的关系,SQL语句中会用到JOIN public class Game : AggregateRoot { public string Ta ...
- Linux Shell命令行快捷键
1. 命令行编辑 <Ctrl>+a 移动光标到行首 <Ctrl>+e ..........行尾 <Alt>+f 光标右移一个词 <Alt>+b .... ...
- iOS-项目创建多个target
在开发中,有时需要两个或多个APP版本,每个版本的改动,不是很多,但是需要另外打包,那么我们就有两套方案: 1.重新开发,把代码复制一遍,然后在修改: 2.用一套代码,根据需求生成不同的包: 我们一般 ...
- Node.js中的模块接口module.exports浅析
在写node.js代码时,我们经常需要自己写模块(module).同时还需要在模块最后写好模块接口,声明这个模块对外暴露什么内容.实际上,node.js的模块接口有多种不同写法.这里作者对此做了个简单 ...
- odoo按钮图标 icon
https://www.slideshare.net/TaiebKristou/odoo-icon-smart-buttons http://www.iconfont.cn/collections/d ...
- Redis笔记(3)多数据库实现
1.前言 本章介绍redis的三种多服务实现方式,尽可能简单明了总结一下. 2.复制 复制也可以称为主从模式.假设有两个redis服务,一个在127.0.0.1:6379,一个在127.0.0.1:1 ...
- Linux-(watch,at,crontab)
watch命令 1.命令格式: watch [参数] [命令] 2.命令功能: 可以将命令的输出结果输出到标准输出设备,多用于周期性执行命令/定时执行命令. watch可以帮你监测一个命令的运行结 ...