Bean相关
Bean容器初始化:
本地文件是绝对路径,classpath是相对路径。例子如下:
Bean配置项:
常用Bean的配置项:
(1)id :在整个IOC容器中,这个bean的唯一标识
(2)class :具体要实例化的某一类,与id对应
(3)scope :bean的作用域
(4)constructor-arg :构造器的参数
(5)properties :某个类的属性
(6)autowiring mode :自动装配模式
(7)lazy-initialization mode :懒加载模式
(8)initialization/destruction method :初始化和销毁方法
从bean容器中要得到某一个实例,有两种方式,一种是通过id获取,一种是通过类型,也就是class获取。
Bean的作用域:
图解:
一个Bean容器:也就是在一个context中,而不是在两个context中去比较实例化对象。
singleton :默认模式
prototype :每次请求获取对象,容器都会创建一个新的实例返回,当不再使用这个对象时,自动被垃圾回收器回收,destroy不生效。
global session :portlet主要用于应用的集成,例如,有OA系统,有HR系统,有财务系统,在一个企业内部,通常不会每个系统都去分别登录,而是做一个port,在这个port里,会把每个系统常用的功能都列在里面,这个port会和所有的系统做单点登录,登录这个port后,可以点击其中任意一个系统都可以登录,也就是在不同的系统中的所拥有的不同的session的作用范围。
判断是否是同一个实例的方法,查看hashCode,测试方法可如下:
详细解析singleton:
Bean的生命周期:
Bean的生命周期:
(1)定义:也就是xml配置文件中配置的bean
(2)初始化:也就是IOC容器在加载的时候,初始化,生成bean的实例
(3)使用:开发中使用某一个bean的实例
(4)销毁:在bean容器停止的时候,销毁这个容器创建的所有实例
针对某一个bean的方法:
初始化的两种方式:
(1)实现org.springframework.beans.factory.InitializingBean接口,覆盖afterPropertiesSet方法
(2)配置init-method
销毁的两种方式:
(1)实现org.springframework.beans.factory.DisposableBean接口,覆盖destroy方法
(2)配置destroy-method
(2)以配置的方式实现,xml配置如下:
具体bean实现:
(1)实现接口的方式,xml正常配置即可,不用配置init和destroy,只需要在具体bean实现中实现相关接口即可,相关代码如下:
配置全局默认初始化、销毁方法:
xml配置文件如下:
具体bean的实现:
总结:
当同时配置以上三种初始化和销毁方式时,实现接口的初始化方法要最先执行,其次是内部配置的初始化方式,然而全局默认的配置方式并不会执行,也就是会被覆盖。而当配置全局默认的配饰方式时,bean具体实现中可以不用实现相对应的初始化和销毁方法,而内配配置的初始化方式,其初始化和销毁方法不能省去。
Aware接口:
spring中提供了一些以aware结尾的接口,实现了aware接口的bean在被初始化之后,可以获取相应资源,所谓资源指以aware结尾的接口,例如beanNameAware,它可获取的相关资源就是beanName相关的;
通过aware接口,可以对spring相应资源进行操作(需慎重,因为获取到的资源可能是IOC容器中非常核心的内容,例如得到了ApplicationContext,执行了它的destroy方法);
为对spring进行简单的扩展提供了方便的入口;
举例:
ApplicationContextAware:它会向实现了这个接口的bean提供ApplicationContext,并且实现了这个接口的bean必须配置到spring的配置文件中,并且由spring的容器去加载
BeanNameAware:它会提供有关BeanName定义的内容
ApplicationEventPublisherAware:用于事件的发布
BeanClassLoaderAware:找到相关的类加载器
Bean的自动装配---xml配置autowire实现:
前面介绍了Spring注入的两种方式:设值注入和构造器注入。
这里利用Bean的自动装配可以省略配置文件中的很多细节。
具体配置文件三种方式可如下进行:
而其具体的bean的实现跟正常情况下一致即可。
Bean相关的更多相关文章
- Spring Bean相关配置
Bean相关配置 1.名称与标识 id 使用了约束中的唯一约束.里面不能出现特殊字符的 name 没有使用约束中的唯一约束.里面可以出现特殊字符. 设置对象的生命周期方法 init-method Be ...
- 依赖配置中心实现注有@ConfigurationProperties的bean相关属性刷新
配置中心是什么 配置中心,通过key=value的形式存储环境变量.配置中心的属性做了修改,项目中可以通过配置中心的依赖(sdk)立即感知到.需要做的就是如何在属性发生变化时,改变带有@Configu ...
- Java Spring Bean相关配置
1.Bean配置信息组成部分: (1)Bean实现类 (2)Bean的属性信息 (3)Bean的依赖关系 (4)Bean的行为配置 2.配置方式: (1)XML配置 (2)注解配置 (3)Java类配 ...
- Spring bean相关
Spring中指定Bean的作用于的方式 以下四种为例: 单例(默认,可以不用特殊表明) @Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON) ...
- Spring(2) --Bean相关
你对Spring中的bean了解吗?都有哪些作用域(Scope)? Spring 官方文档对 bean 的解释是: In Spring, the objects that form the backb ...
- Spring8:一些常用的Spring Bean扩展接口
前言 Spring是一款非常强大的框架,可以说是几乎所有的企业级Java项目使用了Spring,而Bean又是Spring框架的核心. Spring框架运用了非常多的设计模式,从整体上看,它的设计严格 ...
- struts2.3.24 + spring4.1.6 + hibernate4.3.11+ mysql5.5.25开发环境搭建及相关说明
一.目标 1.搭建传统的ssh开发环境,并成功运行(插入.查询) 2.了解c3p0连接池相关配置 3.了解验证hibernate的二级缓存,并验证 4.了解spring事物配置,并验证 5.了解spr ...
- Spring工厂方式创建Bean实例
创建Bean实例的方式: 1) 通过构造器(有参或无参) 方式: <bean id="" class=""/> 2) 通过静态工厂方法 方式: &l ...
- Spring读书笔记——bean创建(下)
有关Spring加载bean系列,今天这是最后一篇了,主要接上篇对于从Spring容器中获取Bean的一些细节实现的补充. <Spring读书笔记--bean加载>--Spring如何加载 ...
随机推荐
- 基于语音转录的ted演讲推荐
论文地址:https://arxiv.org/abs/1809.05350v1 二. 实现 我们从Kaggle[6]中获取了TED演讲数据集,其中包括2400个TED演讲的数据,包括标题.演讲者.标 ...
- day-13 python库实现简单非线性回归应用
一.概率 在引入问题前,我们先复习下数学里面关于概率的基本概念 概率:对一件事发生的可能性衡量 范围:0<=P<=1 计算方法:根据个人置信区间:根据历史数据:根据模拟数据. 条件概率:B ...
- 关于百度Editor富文本编辑器 自定义上传位置
因为要在网站上编辑富文本数据,所以直接采用百度的富文本编辑器,但是这个编辑器有个缺点,默认情况下,文件只能上传到网站的根目录,不能自定义路径. 而且json配置文件只能和controller.jsp在 ...
- CodeForces Round #521 (Div.3) E. Thematic Contests
http://codeforces.com/contest/1077/problem/E output standard output Polycarp has prepared nn competi ...
- jetty maven插件
<plugins> <plugin> <groupId>org.eclipse.jetty</groupId> <artifact ...
- idea tomcat 启动报错 org.apache.catalina.core.StandardService.initInternal Failed to initialize connector
org.apache.catalina.core.StandardService.initInternal Failed to initialize connector org.apache.cata ...
- [剑指Offer] 30.连续子数组的最大和
题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但是,如果向量 ...
- BZOJ4444 SCOI2015国旗计划(贪心+倍增)
链上问题是一个经典的贪心.于是考虑破环成链,将链倍长.求出每个线段右边能作为后继的最远线段,然后倍增即可. #include<iostream> #include<cstdio> ...
- Luogu2662 牛场围栏(最短路)
小凯的疑惑升级版的升级版.答案若存在不会超过30002-3000,暴力dp似乎勉强可以过.当然这不优美. 注意到如果能拼出长度为l的围栏,就一定能拼出长度为l+kx的围栏,其中x为最短的(或任意一个) ...
- hdu 1575 Tr A (二分矩阵)
Tr A Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...