当前位置 : 主页 > 编程语言 > java >

bean标签的使用

来源:互联网 收集:自由互联 发布时间:2022-09-29
/* *作者:呆萌老师 *☑csdn认证讲师 *☑51cto高级讲师 *☑腾讯课堂认证讲师 *☑网易云课堂认证讲师 *☑华为开发者学堂认证讲师 *☑爱奇艺千人名师计划成员 *在这里给大家分享技术、知


 

/*
*作者:呆萌老师
*☑csdn认证讲师
*☑51cto高级讲师
*☑腾讯课堂认证讲师
*☑网易云课堂认证讲师
*☑华为开发者学堂认证讲师
*☑爱奇艺千人名师计划成员
*在这里给大家分享技术、知识和生活
*各种干货,记得关注哦!
*/

bean标签的使用_Spring

1. id和name属性

<!--同时添加name和id -->

<bean id="drink_01" name="drink_02" class="com.test.pojo.Drink"

bean标签的使用_Spring_02

Java代码

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("/applicationContext.xml");
/** * 参数1: name/id * 参数2(可选): 可以指定生成对象类型,如果不填此参数,需进行强转 * 两种方式都可以获取! */
Drink drink_01 = applicationContext.getBean("drink_01", Drink.class);
Drink drink_02 = applicationContext.getBean("drink_02", Drink.class);

bean标签的使用_Spring_03

2 scope属性

 bean标签中添加scope属性,设置bean对应对象生成规则.

2.1 scope = "singleton"

 单例,默认值,适用于实际开发中的绝大部分情况.

配置:

<bean id="drink_01" name="drink_02" scope="singleton" class="com.test.pojo.Drink"

bean标签的使用_Spring_04

测试:

@Test public void test2(){
//TODO 测试bean标签中 scope = singleton

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("/applicationContext.xml");
Drink drink_01 = applicationContext.getBean("drink_01", Drink.class);
Drink drink_02 = applicationContext.getBean("drink_02", Drink.class); System.out.println(drink_01 == drink_02); //打印 true

bean标签的使用_Spring_05

2.2 scope="prototype"

多例,适用于struts2中的action配置

配置:

<bean id="drink_01" name="drink_02" scope="prototype" class="com.test.pojo.Drink"

bean标签的使用_Spring_06

测试 

@Test public void test2(){ //TODO 测试bean标签中 scope = prototype
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("/applicationContext.xml");
Drink drink_01 = applicationContext.getBean("drink_01", Drink.class);
Drink drink_02 = applicationContext.getBean("drink_02", Drink.class); System.out.println(drink_01 == drink_02); //打印 false

bean标签的使用_Spring_07

3 lazy-init属性

注意: 只对单例有效,设置scope="singleton"时测试

延时创建属性.

lazy-init="false" 默认值,不延迟创建,即在启动时候就创建对象.

lazy-init="true" 延迟初始化,在用到对象的时候才会创建对象.

配置:

<bean id="drink_01" name="drink_02" scope="singleton" lazy-init="false" class="com.test.pojo.Drink"

bean标签的使用_Spring_08

测试1: lazy-init="false"

@Test public void test2(){
//TODO 测试bean标签中的 lazy-init="false" 默认值 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("/applicationContext.xml");
System.out.println("获取对象之前!");
Drink drink_01 = applicationContext.getBean("drink_01", Drink.class);
Drink drink_02 = applicationContext.getBean("drink_02", Drink.class); System.out.println("获取对象之后!"); //测试结果: 先输出 实体类的构造方法 --> 获取数据之前 --> 获取数据之后 //证明: false 不延迟创建,在创建ApplicationContext的时候就创建了对象! }

bean标签的使用_Spring_09

测试2:lazy-init="true"

@Test public void test2(){ //TODO 测试bean标签中的 lazy-init="true" 默认值
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("/applicationContext.xml");
System.out.println("获取对象之前!");
Drink drink_01 = applicationContext.getBean("drink_01", Drink.class);
Drink drink_02 = applicationContext.getBean("drink_02", Drink.class); System.out.println("获取对象之后!"); //测试结果: 先输出 获取数据之前 ---> 实体类的构造方法 --> 获取数据之后 //证明: true 延迟创建, 只有在获取的时候创建. }

bean标签的使用_Spring_10

4 初始化/销毁

在Drink类中添加初始化方法和销毁方法(名称自定义):

public void init() { System.out.println("Drink的初始化方法"); }
public void destroy() { System.out.println("Drink的销毁方法"); }

bean标签的使用_Spring_11

在配置文件中添加:

<bean id="drink_01" name="drink_02" scope="singleton" lazy-init="true" init-method="init" destroy-method="destroy" class="com.test.pojo.Drink"

bean标签的使用_Spring_12

更多关注

​​https://edu.51cto.com/topic/3338.html​​

上一篇:消息中间件ActiveMQ常见问题解析
下一篇:没有了
网友评论