博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring实例化Bean三种方法:构造器、静态工厂、实例工厂
阅读量:4624 次
发布时间:2019-06-09

本文共 3421 字,大约阅读时间需要 11 分钟。

Spring中Bean相当于java中的类,可以通过xml文件对bean进行配置和管理。

一、Bean的实例化:

构造器实例化、静态工厂实例化、实例工厂方式实例化。

目录:

构造器实例化:

xml配置文件:

 

id唯一,calss指定Bean具体实现类,必须是完整的类名,可以在Bean1.java文件中右击“public class Bean1”中的Bean1,选中Copy Qualifiel Name得到。注意这里用"."分隔。

测试函数:

测试函数中首先定义xml配置文件的路径,可以在目录视图中右键选中Copy Qualifiel Name得到,注意这里从com开始,因为是路径所以用/隔开。

然后加载配置文件对Bean进行实例化,在通过getBean函数获得指定id的实例对象,注意类型转换。

完整代码:

package com.liu.instance.contructor;public class Bean1 {}
Bean1.java
beans1.xml
package com.liu.instance.contructor;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class InstanceTest {    public static void main(String[] args) {        //定义配置文件路径        String xmlPath = "com/liu/instance/contructor/beans1.xml";        //ApplicationContext 加载配置文件时对Bean进行实例化。        ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);        //配置文件的id确定是哪个bean,在通过class找到java文件创建对象。        Bean1 bean1 = (Bean1) applicationContext.getBean("bean1");        System.out.println(bean1);                }}
InstanceTest.java

运行截图:

 

静态工厂实例化:

xml配置文件:

id唯一,class为工厂方法类,factory-method值为方法名,确定使用了工厂中的哪个方法。

静态工厂类:

 静态方法返回一个Bean2对象。

package com.liu.instance.static_factory;/* * lsq * 2019-9-10 * Spring静态工厂实例化被实例化的类Bean2 */public class Bean2 {}
Bean2.java
package com.liu.instance.static_factory;/* * lsq * 2019-9-10 * Spring静态工厂实例化 */public class MyBean2Factory {    //创建Bean2对象    public static Bean2 createBean2(){        return new Bean2();    }}
MyBean2Factory.java
package com.liu.instance.static_factory;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;/* * lsq * 2019-9-10 * Spring静态工厂实例化对象测试类 */public class InstanceTest {    public static void main(String[] agrs){        //定义配置文件路径        String xmlPath = "com/liu/instance/static_factory/beans2.xml";        //实例化对象        ApplicationContext ApplicationContext = new ClassPathXmlApplicationContext(xmlPath);        //调用函数        //getBean函数传入id属性值获取对象        System.out.println(ApplicationContext.getBean("bean2"));    }}
InstanceTest.java
beans2.xml

 运行截图: 

 

实例工厂实例化:

xml配置文件:

 两个bean第一个为静态工厂,class为静态工厂类。第二个为bean3,factory-method属性配置实例工厂,factory-method确定使用工厂中哪个方法。

工厂类:

 返回一个Bean3对象。

完整代码:

package com.liu.instance.factory;/* * lsq * 2019-9-10 * Spring工厂实例化对象 */public class Bean3 {}
Bean3.java
bean3.xml
package com.liu.instance.factory;/* * lsq * 2019-9-10 * Spring工厂实例化对象 */public class MyBean3Factory {    public MyBean3Factory(){        System.out.println("Bean3工厂实例化中。。。");    }    public Bean3 createBean3(){        return new Bean3();    }}
MyBean3Factory.java
package com.liu.instance.factory;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;/* * lsq * 2019-9-10 * Spring工厂实例化测试类 */public class InstanceTest3 {    public static void main(String[]args){        //指定配置文件路径        String xmlPath= "com/liu/instance/factory/bean3.xml";        //ApplicationContext加载配置文件时,对Bean进行实例化        ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);                System.out.println(applicationContext.getBean("bean3"));    }}
InstanceTest3.java

运行截图:

 

三种方法区别:

 

转载于:https://www.cnblogs.com/liushiqiang123/p/11502986.html

你可能感兴趣的文章
数据结构(五)之直接插入排序
查看>>
SQL函数——LENGTH()和LENGTHB()
查看>>
vim - manual -个人笔记
查看>>
详解Javascript中prototype属性(推荐)
查看>>
angularjs实现首页轮播图
查看>>
Git 对象 和checkout 和stash的笔记
查看>>
团队项目总结2-服务器通信模型和顺序图
查看>>
hdu 1085 Holding Bin-Laden Captive!
查看>>
[周记]8.7~8.16
查看>>
递归定义
查看>>
kindeditor 代码高亮设置
查看>>
图的邻接表存储
查看>>
2018 leetcode
查看>>
PHP中获取当前页面的完整URL
查看>>
Chapter 4 Syntax Analysis
查看>>
vi/vim使用
查看>>
讨论Spring整合Mybatis时一级缓存失效得问题
查看>>
Maven私服配置Setting和Pom文件
查看>>
Python标准库:内置函数getattr(object, name[, default])
查看>>
转:android 自定义RadioButton样式
查看>>