时间:2021-05-19
今天我想来说说如何通过xml配置来实例化bean,其实也很简单。
使用xml配置来实例化bean共分为三种方式,分别是普通构造方法创建、静态工厂创建、实例工厂创建,OK,那么接下来我们来分别看看这几种方式。
普通构造方法创建
这种创建方式使我们使用最多的一种创建方式,直接配置bean节点即可,比如我有一个User类,如下:
public class User { public void add() { System.out.println("add()---------"); }}然后通过简单配置一个bean节点就可以获取实例了,如下:
<bean class="org.sang.User" id="user"/>OK,我们通过如下代码进行一个简单的测试:
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); User user = (User) context.getBean("user"); System.out.println(user);运行输出结果如下:
静态工厂创建
除了通过普通的构造方法创建之外,我们也可以通过静态构造方法来创建一个bean的实例,假设我有一个类叫做User2,如下:
public class User2 { public void add() { System.out.println("add2()---------"); }}我给它创建一个静态工厂,如下:
public class User2Factory { public static User2 getInstance() { return new User2(); }}该工厂中有一个静态方法,该静态方法返回一个User2的实例,在Spring的配置文件中,我们看看如何生成User2的实例:
复制代码 代码如下:
<bean id="user2" class="org.sang.User2Factory" factory-method="getInstance"/>
还是bean节点,只是多了一个factory-method属性,该属性指明该类中的静态工厂方法名为getInstance,这样Spring框架就知道调用哪个方法来获取User2的实例了,测试代码如下:
@Test public void test2() { ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); User2 user = (User2) context.getBean("user2"); user.add(); }测试结果如下:
值得强调的是,这种方法并不常用。
实例工厂创建
小伙伴们看了静态工厂创建bean实例肯定都觉得很麻烦,事实上还有比静态工厂更麻烦的写法,那就是通过实例工厂来创建bean实例。实例工厂,顾名思义,就是我们工厂中的方法不是静态的,比如说,我有一个实体类叫做User3,如下:
public class User3 { public void add() { System.out.println("add3()---------"); }}然后我还有一个工厂方法,如下:
public class User3Factory { public User3 getUser3() { return new User3(); }}小伙伴们看到,在User3Factory类中有一个getUser3的方法,该方法返回一个User3类的实例,但是该方法不是静态的,那么我们在Spring的配置文件中要进行怎样的配置才能获取User3的一个实例呢?如下:
<bean class="org.sang.User3Factory" id="user3Factory"/><bean id="user3" factory-bean="user3Factory" factory-method="getUser3"/>第一个bean用来获取user3Factory的实例,第二个bean则根据User3Factory的实例,然后指定factory-method,通过getUser3方法来获取User3的实例。
测试代码如下:
@Test public void test3() { ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); User3 user = (User3) context.getBean("user3"); user.add(); }测试结果如下:
OK,以上就是bean实例化的三种方式,最最常用的是第一种。
本文案例GitHub地址https://github.com/lenve/JavaEETest/tree/master/Test28-Spring1
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
IOC装配Bean(1)Spring框架Bean实例化的方式提供了三种方式实例化Bean构造方法实例化(默认无参数,用的最多)静态工厂实例化实例工厂实例化下面先
自动装配是Spring满足Bean依赖的一种方式;Spring会在context中自动寻找,并自动给bean装配属性;在Spring中有三种装配的方式:在xml
关于在spring容器初始化bean和销毁前所做的操作定义方式有三种:第一种:通过注解@PostConstruct和@PreDestroy方法实现初始化和销毁b
前言在介绍Bean的实例化的方式之前,我们首先需要介绍一下什么是Bean,以及Bean的配置方式。如果把Spring看作一个大型工厂,那么Spring容器中的B
在Spring容器中为一个bean配置依赖注入有三种方式:使用属性的setter方法注入这是最常用的方式;使用构造器注入;使用Filed注入(用于注解方式).F