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如何加载 ...
随机推荐
- 分词(Tokenization) - NLP学习(1)
自从开始使用Python做深度学习的相关项目时,大部分时候或者说基本都是在研究图像处理与分析方面,但是找工作反而碰到了很多关于自然语言处理(natural language processing: N ...
- POJ 1144 Network(割点)
Description A Telephone Line Company (TLC) is establishing a new telephone cable network. They are c ...
- 数据结构6——DFS
一.相关定义 深度优先遍历,也有称为深度优先搜索,简称DFS.其实,就像是一棵树的前序遍历. 初始条件:图G所有顶点均未被访问过,任选一点v. 思想:是从一个顶点V1开始,沿着一条路一直走到底,如果发 ...
- windows下连接hadoop运行eclipse报错Permission denied:
这是权限问题,试了一下同时也不能在hdfs创建文件夹. 解决: 修改如下hadoop的配置文件:etc/hadoop/hdfs-site.xml,如没有的话可以添加上. <property> ...
- Python 随笔01---列表
列表 1.取出列表中的元素方法?? 2.删除列表中的元素del.remove对比?? 3.linux 常用操作命令
- 【翻译】ASP.NET Core 入门
ASP.NET Core 入门 原文地址:Introduction to ASP.NET Core 译文地址:asp.net core 简介 翻译:ganqiyin ...
- fork开源代码后如何基于某个tag建立自己的branch
应用场景: 在github上fork一个自己想看的开源项目,想基于某个tag来写一些测试demo,然后可以做到版本控制. 方法: //克隆 git clone xxxxx.git //查看tag gi ...
- mysql ibd 文件还原数据
-- 这里要还原的表名为 test_table -- 1建库,并选中库,库名随意 -- 2查看InnoDB 引擎独立表空间是否开启 SHOW VARIABLES LIKE '%per_table%' ...
- WCF身份验证二:基于消息安全模式的自定义身份验证
使用X509证书进行身份验证应该说是WCF安全模型中最”正常”的做法, 因为WCF强制要求使用证书加密身份数据, 离开了证书, 所有的身份验证机制拒绝工作, WCF支持的身份验证机制也相当复杂, 这里 ...
- 我的python计划
一直想学习一种脚本语言.现在主流的脚本语言,比较先接触的是python 刚开始了解了一下python,感觉挺适合自己的感觉,学习了一段时间,之中感觉,就好象C++一样,把面向对象和面向过程编程结合了起 ...