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 ...
随机推荐
- (01背包 先排序)Proud Merchants (hdu 3466)
http://acm.hdu.edu.cn/showproblem.php?pid=3466 Description Recently, iSea went to an ancient count ...
- python特殊方法定制类
#coding:utf-8class RoundFloat(object): def __init__(self,val): assert isinstance(val, float),"v ...
- TypeScript开发环境搭建(Visual studio code)
使用Visual Studio Code搭建TypeScript开发环境 1.TypeScript是干什么的 ? TypeScript是由微软Anders Hejlsberg(安德斯·海尔斯伯格,也是 ...
- SystemProperties.get/set property_get/set
在java层设置系统属性要注意几点: 1 需要有系统权限.可以在AndroidManifest.xml添加android:sharedUserId="android.uid.system&q ...
- hive 修复分区、添加二级分区
我们在之前的文章中,介绍了二级分区,混合分区,静态分区,动态分区的区别和建表. 今天我们聊下,当我们建好分区表.并且通过程序在表的分区目录(location)下,写入了文件. 如何在hive中查询到插 ...
- Linux-IO重定向与管道
1. 输入与输出 标准输入 STDIN 文件描述符:0,默认:键盘输入 标准输出 STDOUT 文件描述符:1,默认:屏幕输出 错误输出 STDERR 文件描述符:2,默认:屏幕输出 2. 标准输出重 ...
- WPF 网易云音乐PC端
简介 (1)左侧菜单采用 Expander+RadioButton: MVVM 绑定 后台的一个Menu 属性(使用转换器) (2)右侧采用Frame绑定Page的方式 ## [更新日志] ### 1 ...
- MVC框架json数据展示程序(第一版)
模型原型:服务器的配置和运行状态信息. 设计要求:Json格式数据解析后,判断配置信息是否是新数据或者是否更新.如是新数据,则直接添加到数据库:若是数据更新,则更新数据库配置信息并更新运行状态信息:都 ...
- Windows下安装配置爬虫工具Scrapy及爬虫环境
爬虫工具Scrapy在Mac和Linux环境下都相对好装,但是在Windows上总会碰到各种莫名其妙的问题.本文记录下Scrapy在Window上的安装过程. 本文是基于Python2.7及Windo ...
- 网页登入验证码的实现(java&html)
前端界面实现(由于验证码是动态获取所以用jsp格式) <%@ page language="java" contentType="text/html; charse ...