欢迎使用CSDN-markdown编辑器
来源:互联网 发布:淘宝网拖鞋带后跟 编辑:程序博客网 时间:2024/04/29 01:21
Bean 的常见几种实例化方式
刚学完bean的几种常见的实例化方式,感觉以后要使用的话会被遗忘,索性就总结一下,以后要是用到新的方式,还会再追加。
- 第一种:默认无参数构造器进行初始化
- 第二种:静态工厂进行初始化
- 第三种:实例工厂进行初始化
- 第四种:实现FactoryBean接口进行初始化
第一种:默认无参数构造器进行初始化
-我们先创建一个Bean1类
package com.yyk.definationBean;/** * * @author Administrator * 对于bean1 * 我们采用第一种实例化bean的方式:默认无参数构造器进行初始化 */public class Bean1 { //默认会有一个无参构造器 所以才不会报错 public void getBean(){ System.out.println("Bean1==========getBean()"); } /** 测试1 如果我们加一个有参数的构造器 ,测试结果会报错 public Bean1(int n){} 测试2 如果存在一个无参的 一个有参的 构造器 则不会报错 public Bean1(int n){} public Bean1(){} */}
-在配置文件中进行配置:
<?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="bean1" class="com.yyk.definationBean.Bean1"/>
-在测试程序中进行调用
@Test public void testDefination() { //获取工厂 ApplicationContext applicationContext = new ClassPathXmlApplicationContext( "applicationContext.xml"); Bean1 bean1 = (Bean1) applicationContext.getBean("bean1"); bean1.getBean(); System.out.println(bean1);//获取bean1对象
第二种:静态工厂进行初始化
-我们先创建一个Bean2类
package com.yyk.definationBean;/** * * @author Administrator * 对于bean2 * 我们通过静态工厂方法进行实例化bean, 我们要建立一个静态工厂类 */public class Bean2 {}
-创建一个静态工厂类:
package com.yyk.definationBean;/* bean2的工厂类 实际中静态工厂的使用是 拿别人做好的静态工厂 我们调用其中的一些方法 就可以使用 然后进行 静态工厂的配置*/public class Bean2Factory { //静态方法 public static Bean2 initBean2(){ System.out.println("静态工厂方法=============="); 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="bean2" class="com.yyk.definationBean.Bean2Factory" factory-method="initBean2"/>
-在测试程序中进行调用
@Test public void testDefination() { //获取工厂 ApplicationContext applicationContext = new ClassPathXmlApplicationContext( "applicationContext.xml"); //通过调用静态工厂的方式进行 Bean2 bean2 = (Bean2) applicationContext.getBean("bean2"); System.out.println(bean2);//获取bean2对象
第三种:实例工厂进行初始化
-我们先创建一个Bean3类
package com.yyk.definationBean;/** * * @author Administrator * 对于bean3 * 用实例工厂进行实例化bean */public class Bean3 {}
-Bean3的实例化工厂
package com.yyk.definationBean;//实例工厂方法//显示中使用别人的工厂的时候进行调用 然后进行配置public class Bean3Factory { public Bean3 createBean3(){ 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="bean3Factory" class="com.yyk.definationBean.Bean3Factory"/> <bean id="bean3" factory-bean="bean3Factory" factory-method="createBean3"/>
-在测试程序中进行调用
@Test public void testDefination() { //获取工厂 ApplicationContext applicationContext = new ClassPathXmlApplicationContext( "applicationContext.xml"); //通过实例工厂方法进行 Bean3 bean3 = (Bean3) applicationContext.getBean("bean3"); System.out.println(bean3);//获取bean3对象
第四种:实现FactoryBean接口进行初始化
-我们先创建一个自定义工厂bean类
package com.yyk.definationBean;import org.springframework.beans.factory.FactoryBean;/**第四种 利用FactoryBean 进行实例化Bean * 自定义工厂Bean 需要实现一个接口 * 实现方法 之后进行配置 */public class MyFactoryBean implements FactoryBean<Bean3> { //返回目标对象的方法 @Override public Bean3 getObject() throws Exception { System.out.println("这是一个工厂bean========"); return new Bean3(); } @Override public Class<?> getObjectType() { // TODO Auto-generated method stub return null; } @Override public boolean isSingleton() { // TODO Auto-generated method stub return false; }}
-在配置文件中进行配置:
<?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"> <!-- 第四种 利用FactoryBean进行 --> <bean id="bean3_2" class="com.yyk.definationBean.MyFactoryBean"/>
-在测试程序中进行调用
@Test public void testDefination() { //获取工厂 ApplicationContext applicationContext = new ClassPathXmlApplicationContext( "applicationContext.xml"); //通过实现FactoryBean方法进行 System.out.println(applicationContext.getBean("bean3_2"));
除此之外,还可以使用bean的注解进行实例化bean。
0 0
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- Web前端和后端
- 火车站进站
- Android6.0自带文件管理器无法打开apk
- 读取联系人
- 习题课第一次作业:3、Huffman coding tree
- 欢迎使用CSDN-markdown编辑器
- 怎样安装 OpenJDK 8 in Ubuntu 14.04 & 12.04 LTS
- 读取短信
- android 使用Handler
- 丑数(UVa 136)
- NoSuchMethodError: javax.servlet.http.HttpServletResponse.getStatus()I
- POJ1200
- C#的第19课的内容
- WINDOWS API——OPENCLIPBOARD——剪切板