spring组件---4

第4小节:@Scope组件

写一个新的配置类:
@Configuration
public class MainConfig2 {
@Bean(“person”)
public Person person(){
return new Person(“xy”,12);
}
}

编写一个测试类:
public void IOCTest02() {
//指定配置类所在的位置,返回ioc容器
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfig2.class);
//查看该容器中有哪些bean
String[] definitionNames = applicationContext.getBeanDefinitionNames();
for (String name : definitionNames) {
System.out.println(name);
}
//根据id获取bean
//在ioc容器中,组件默认都是单实例的
Object bean=applicationContext.getBean(“person”);
Object bean1=applicationContext.getBean(“person”);
System.out.println(bean==bean1);
}

测试结果:
org.springframework.context.annotation.internalConfigurationAnnotationProcessor
org.springframework.context.annotation.internalAutowiredAnnotationProcessor
org.springframework.context.annotation.internalRequiredAnnotationProcessor
org.springframework.context.annotation.internalCommonAnnotationProcessor
org.springframework.context.event.internalEventListenerProcessor
org.springframework.context.event.internalEventListenerFactory
mainConfig2
person
true———默认组件都是单实例,所以获取到的第一次和第二次获取到的对象是一致的

可以借助@Scope注解改变ioc实例化对象的作用范围
在配置类中的实例化方法上添加注解:@Scope(“prototype”)

@Configuration
public class MainConfig2 {
@Scope(“prototype”)
@Bean(“person”)
public Person person(){
return new Person(“xy”,12);
}
}

测试类不变
测试结果:
false ——两次获取实例时获取到的不是同一个实例对象

@scope的取值主要有四种:
prototype:多实例的 :ioc容器启动并不会去调用方法创建对象放在容器中,每次获取的时候才会调用方法去创建对象
Singleton:单实例的(默认值:ioc容器启动会调用方法创建对象放到ioc容器中,以后每次获取就是直接从容器中拿(从map中get一个实例)
request: 同一次请求创建一个实例 ———web环境下
session:同一个session创建一个实例 ———web环境下

测试:ioc容器启动会调用方法创建对象放到ioc容器中,以后每次获取就是直接从容器中拿(从map中get一个实例)

首先在配置类中将@Scope的值指定为默认值

@Configuration
public class MainConfig2 {
@Scope(“prototype”)
@Bean(“person”)
public Person person(){
System.out.println(“给容器中添加person…”);
return new Person(“xy”,12);
}
}
编写测试类:
在该类中只是获取容器,不使用获取到的实例对象:
@Test
public void IOCTest02() {
//指定配置类所在的位置,返回ioc容器
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfig2.class);
}

测试结果:给容器中添加person…

容器一启动就创建了该实例对象,以后每次使用是在一个map集合中get这个实例对象,每次都是同一个

测试多实例的加载时间:
在配置中将@Scope的属性值指定为prototype
@Configuration
public class MainConfig2 {
@Scope(“prototype”)
@Bean(“person”)
public Person person(){
System.out.println(“给容器中添加person…”);
return new Person(“xy”,12);
}
}
编写测试类:
@Test
public void IOCTest02() {
//指定配置类所在的位置,返回ioc容器
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfig2.class);
}

测试结果: (无)

测试:ioc容器启动并不会去调用方法创建对象放在容器中,每次获取的时候才会调用方法去创建对象
测试类2:
@Test
public void IOCTest02() {
//指定配置类所在的位置,返回ioc容器
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfig2.class);
//根据id获取bean
//在ioc容器中,组件默认都是单实例的
System.out.println(“ioc容器创建完成。。。”);
Object bean=applicationContext.getBean(“person”);
}

测试结果:
ioc容器创建完成。。。
给容器中添加person…

也就是,当需要使用到实例时再调用实例方法去创建实例对象

若是多次获取:
测试类3:

@Test
public void IOCTest02() {
//指定配置类所在的位置,返回ioc容器
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfig2.class);
//根据id获取bean
//在ioc容器中,组件默认都是单实例的
System.out.println(“ioc容器创建完成。。。”);
Object bean=applicationContext.getBean(“person”);
Object bean1=applicationContext.getBean(“person”);
}

测试结果:
ioc容器创建完成。。。
给容器中添加person…
给容器中添加person…

也就是,获取几次实例对象就会调用几次实例方法去创建实例

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
大学生在线租房平台管理系统按照操作主体分为管理员和用户。管理员的功能包括报修管理、报修评价管理、字典管理、房东管理、房屋管理、房屋收藏管理、房屋留言管理、房屋租赁管理、租房论坛管理、公告信息管理、留言板管理、用户管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 大学生在线租房平台管理系统可以提高大学生在线租房平台信息管理问题的解决效率,优化大学生在线租房平台信息处理流程,保证大学生在线租房平台信息数据的安全,它是一个非常可靠,非常安全的应用程序。 管理员权限操作的功能包括管理公告,管理大学生在线租房平台信息,包括房屋管理,培训管理,报修管理,薪资管理等,可以管理公告。 房屋管理界面,管理员在房屋管理界面中可以对界面中显示,可以对房屋信息的房屋状态进行查看,可以添加新的房屋信息等。报修管理界面,管理员在报修管理界面中查看报修种类信息,报修描述信息,新增报修信息等。公告管理界面,管理员在公告管理界面中新增公告,可以删除公告。公告类型管理界面,管理员在公告类型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值