Spring总结 2.装配bean
本随笔内容要点如下:
- bean的作用域
- 占位符
一、bean的作用域
在默认情况下,Spring管理的bean的单例的。也就是说,无论注入多少次,都是同一个bean对象。一般情况下,单例模式是足以应付大多数场景。
Spring还提供了其他几个可选的作用域:
- prototype:原型,每次从容器获取对象的时候都会创建一个新的bean
- session:会话,用在Web应用中,为每一个会话都产生一个新bean
- request:请求,同session
- global session:与session类似,但是它只能在portlet的应用才能使用
- application:为每个ServletContext创建一个bean。有点像singleton了,毕竟一个web应用只有一个ServletContext
如果想改变bean的作用域的话,可以通过如下方式进行修改:
<bean id="xxx" class="xxx" scope="singleton" />
通过bean标签中的scope属性。如果是注解方式,那么可以使用注解@Scope
@Scope("prototype")
二、属性占位符
在使用spring依赖注入时,我们时常会设置对象的属性。例如配置连接池:
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="xxx" />
<property name="jdbcUrl" value="xxx" />
<property name="user" value="xxx" />
<property name="password" value="xxx" />
</bean>
像上述那样子写那么值就变成硬编码了。一般会将属性值该抽取出来形成一个文件,再通过spring提供的属性占位符功能来注入值:
<context:property-placeholder location="classpath:db.properties"/> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClass}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
如上,那么我们就只需要把信息写在db.properties文件。采用Java配置如下:
@Configuration
@PropertySource("classpath:db.properties")
public class Config {
@Autowired
private Environment env; @Bean
public DataSource dataSource() throws PropertyVetoException{
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setDriverClass(env.getProperty("jdbc.driverClass"));
dataSource.setJdbcUrl(env.getProperty("jdbc.driverClass"));
dataSource.setUser(env.getProperty("jdbc.driverClass"));
dataSource.setPassword(env.getProperty("jdbc.driverClass"));
return dataSource;
}
}
采用@PropertySource来引入配置文件,在代码里面,通过使用注入的Environment来获取要得到的属性。
Spring总结 2.装配bean的更多相关文章
- Spring总结 1.装配bean
本随笔内容要点如下: 依赖注入 Spring装配bean的方式 条件化装配 一.依赖注入 我理解的依赖注入是这样的:所谓的依赖,就是对象所依赖的其他对象.Spring提供了一个bean容器,它负责创建 ...
- Spring 之自动化装配 bean 尝试
[Spring之自动化装配bean尝试] 1.添加dependencies如下所示(不是每一个都用得到 <dependencies> <dependency> <grou ...
- spring中自动装配bean
首先用@Component注解类: package soundsystem: import org.springframework.stereotype.Component; @Component p ...
- spring的自动装配Bean与自动检测Bean
spring可以通过编写XML来配置Bean,也可以通过使用spring的注解来装配Bean. 1.自动装配与自动检测: 自动装配:让spring自动识别如何装配bean的依赖关系,减少对<pr ...
- Spring学习笔记—装配Bean
在Spring中,对象无需自己负责查找或创建与其关联的其他对象.相反,容器负责把需要相互协作的对象引用赋予各个对象.创建应用对象之间协作关系的行为通常称为装配(wiring),这也是依赖注入的本质. ...
- spring实战三装配bean之Bean的作用域以及初始化和销毁Bean
1.Bean的作用域 所有的spring bean默认都是单例.当容器分配一个Bean时,不论是通过装配还是调用容器的getBean()方法,它总是返回Bean的同一个实例.有时候需要每次请求时都获得 ...
- spring实战一:装配bean之注入Bean属性
内容参考自spring in action一书. 创建应用对象之间协作关系的行为通常称为装配,这也是依赖注入的本质. 1. 创建spring配置 spring是一个基于容器的框架.如果没有配置spri ...
- Spring框架---IOC装配Bean
IOC装配Bean (1)Spring框架Bean实例化的方式提供了三种方式实例化Bean 构造方法实例化(默认无参数,用的最多) 静态工厂实例化 实例工厂实例化 下面先写这三种方法的applicat ...
- 【Spring 核心】装配bean(二) JavaConfig装配
前面介绍完了组件扫描和自动装配,这里再来看一下装配bean的另一种方式JavaConfig. 包路径: src/main/java com.bonc-|--config--|--CDPlayerCon ...
- Spring系列之装配Bean
Spring 的三种装配Bean的方式 组件扫描+自动装配(隐式) 通过Java config装配bean(显示) 通过XML装配bean(显示) 一.组件扫描+自动装配(隐式配置) 组件扫描: Sp ...
随机推荐
- vsm安装
一. 部署环境介绍 软件需求 1) CentOS 6.5 64bit 2) Ceph 0.80.6 网络拓扑介绍 1) Controller Node 由Console节点组成,安装VSM控制平台 2 ...
- HDU 4893 线段树的 点更新 区间求和
Wow! Such Sequence! Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Oth ...
- CocoaPods的使用(一) 安装
一.什么是CocoaPods? 前言: 思考如何引入一个第三方框架. 例如: 百度地图SDK.友盟.ShareSDK. 信鸽推送等. 从github或某处下载第三方SDK 工程中导入所需要的SDK的文 ...
- springmvc配置文件web.xml详解各方总结。
Spring分为多个文件进行分别的配置,其中在servlet-name中如果没有指定init-param属性,那么系统自动寻找的spring配置文件为[servlet-name]-servlet.xm ...
- WPF如何设置Image.Source为资源图片
img.Source = new BitmapImage(new Uri(path,UriKind.RelativeOrAbsolute));
- FFmpeg4.0笔记:rtsp2rtmp
Github https://github.com/gongluck/FFmpeg4.0-study.git #include <iostream> using namespace std ...
- 文本框仅可接收decimal
文本框html如下: <div><label class="label">价格:</label><input id="TextP ...
- iOS开发之Todo List for Swift项目
一直从事Windows Phone开发,但对iOS开发一直有所好奇,于是在MBP到手之际,顺手安装了Xcode.移动互联网开发的相似性,使得我能快速地了解和认识了iOS的开发框架体系,在看完了Appl ...
- css 图片文字居中
1.单行文字居中 2.多行文字居中 3.利用background-position:center;的图片居中 4.利用display:table-cell;属性的图片居中 <!DOCTYPE h ...
- odoo开发笔记 -- context上下文
字段级别 视图级别 窗口动作级别