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如何加载 ...
随机推荐
- 一款代码高亮插件 -- SyntaxHighlighter
SyntaxHighlighter 是当前用得最多的一款代码高亮插件,包括本博客也用到了该插件来显示代码,大家可以看到效果了.只不过这是针对WordPress的一款代码高亮插件,而今天我要给大家介绍的 ...
- shell及Python爬虫实例展示
1.shell爬虫实例: [root@db01 ~]# vim pa.sh #!/bin/bash www_link=http://www.cnblogs.com/clsn/default.html? ...
- Mybatis实例教程整体说明
什么是mybatisMyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis使用简单的XML或 ...
- [org.hibernate.engine.jdbc.spi.SqlExceptionHelper]SQL Error: 1064, SQLState: 42000问题的解决办法
[org.hibernate.engine.jdbc.spi.SqlExceptionHelper]SQL Error: 1064, SQLState: 42000问题的解决办法. 出现这种情况的原因 ...
- lintcode-110-最小路径和
110-最小路径和 给定一个只含非负整数的m*n网格,找到一条从左上角到右下角的可以使数字和最小的路径. 注意事项 你在同一时间只能向下或者向右移动一步 样例 标签 动态规划 思路 使用动态规划,用二 ...
- lintcode-84-落单的数 III
84-落单的数 III 给出2*n + 2个的数字,除其中两个数字之外其他每个数字均出现两次,找到这两个数字. 样例 给出 [1,2,2,3,4,4,5,3],返回 1和5 挑战 O(n)时间复杂度, ...
- Redis--各个数据类型最大存储量
原文地址:https://redis.io/topics/data-types Strings类型:一个String类型的value最大可以存储512M Lists类型:list的元素个数最多为2^3 ...
- wait_event_interruptible_timeout
最近一套方案涉及到内核线程之间的同步,用到了函数wait_event_interruptible_timeout函数,大致是这样: A:是一个后台的线程,平常没事就睡觉,有时被唤醒,或者每5分钟醒一次 ...
- 【bzoj1001】[BeiJing2006]狼抓兔子 最小割+对偶图+最短路
题目描述 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: ...
- 【bzoj1263】[SCOI2006]整数划分 高精度
题目描述 从文件中读入一个正整数n(10≤n≤31000).要求将n写成若干个正整数之和,并且使这些正整数的乘积最大. 例如,n=13,则当n表示为4+3+3+3(或2+2+3+3+3)时,乘积=10 ...