Spring Bean配置细节author: 惠惠
来源:互联网 发布:发热丝数据 编辑:程序博客网 时间:2024/05/17 01:02
## 字面值
可用字符串表示的值,可以通过元素标签或value属性进行注入。
如果字面值包含特殊字符,可以使用
使用utility schema定义集合
使用基本的集合标签定义集合时,不能将集合作为独立的Bean定义,导致其他Bean无法引用该集合,所以无法在不同Bean之间共享集合。
可以使用util schema 里的集合标签定义独立的集合Bean需要注意的是,必须在根元素里添加util schema定义。
p命名空间
简化property的应用
<bean id="**" class="**"> p:name="**" p:car-ref="**"</bean>
autowire
可以使用autowire属性指定自动装配的方式。
byName根据bean的名字和当前bean的setter风格属性名进行自动装配,若有匹配,进行自动装配,没有则不装配。
byType根据bean的属性的类型进行自动装配。若IOC容器中有1个以上的类型匹配的bean,则抛异常。
bean作用域
singeton: 默认值,(容器初始化时创建bean实例),在整个容器的生命周期内只创建以一个bean。
property: 原型值,(容器初始化时不创建bean实例),而且在每次请求时都创建一个新的bean实例,并返回。
使用外部属性文件
配置bean时,在bean配置中混入系统部署的细节信息(文件路径,数据源配置信息),部署细节要和bean配置相分离。
spring提供PropertyPlaceholderConfigurer的BeanFactory后置处理器,将用户bean配置到外移的属性文件。
SpEL
Spring表达式语言,支持运行时查询和操作对象图的强大表达式语言
类似于EL:SpEL使用#{…}作为定界符
- 通过bean的id对bean进行引用
- 调用方法以及引用对象的属性
- 计算表达式的值
- 正则表达式的匹配
bean生命周期方法
Spring IOC容器对bean的生命周期进行管理的过程:
- 通过构造器或工厂方法创建bean的实例
- 为bean的属性设置值和对其他bean的引用
- bean可以使用了
- 当容器关闭时,调用bean的销毁方法
在bean的申明中,设置init-method和destroy-method属性,为bean指定从初始化和销毁方法。
实现BeanPostProcessor接口,并具体提供
Object postProcessBeforeInitialization(Object bean, String beanName): init-method之前被调用
Object postProcessAfterInitialization(Object bean, String beanName): destroy-method之前被调用
bean:bean实例本身
beanName:IOC容器配置的bean的名字
返回值:实际上返回给用户的那个bean,可以在以上两方法修改返回bean,或返回一个新bean
不需要配置id,IOC容器自动识别是一个BeanPostProcessor
静态工厂方法配置
直接调用某一个类的静态方法可以返回bean的实例
class属性:指向工厂方法的全类名
factory-method:指向工厂方法的名字
constructor-arg:工厂方法需要配置参数,则使用constructor-arg
单例factory,需要指定factory-bean
factorybean 需要实现
通过factoryBean配置bean实例,class指向factorybean的全类名,peoperty可以配置factorybean的属性,但是返回的是factorybean中getObject()方法返回的实例
注解
Spring可以从classpath下自动扫描,侦测和实例化具有特定注解的组件
- @component:基本注解,标识了一个受Spring管理的组件
- @Repository:标识持久层组件
- @Service:标识服务层组件
- @Controller:标识表现层组件
Spring默认命名策略:使用非限定类名,第一个字母小写,也可以在注解中通过value属性标识组件名称。
在classpath中扫描组件
组件类使用特定的注解,需要在Spring的配置文件声明
- base-package: 属性指定需要扫描的基类包,Spring容器将会扫描这个基类包及其子包中的所有类
当需要扫描多个包时,可以使用逗号分隔
-如果仅需要扫描特定的类而非基包下所有的包,可以使用resource-pattern属性过滤特定的类,示例:
组件装配
元素会自动注册AutowiredAnnotationBeanPostProcessor实例,该实例可以自动装配具有@Autowired和@Resource、@Inject注解的属性。
@Autowired自动装配bean
@Autowired注解自动装配具有兼容类型的单个bean属性
- 构造器,普通字段(即使非public),一切具有参数的方法都可以应用@Autowired注解
- 默认情况下,所有使用@Autowired注解的属性都需要被设置,当Spring找不到匹配的Bean装配属性时,会抛出异常。若某一属性允许不被设置(没有被bean注入IOC),可以设置@Autowired注解的required属性为false
- 默认情况下,当IOC容器里存在多个类型兼容的Bean,通过类型的自动装配将无法工作,此时可以在@Qualifier注解提供Bean的名称,Spring允许对方法的入参标注@Qualifier已指定注入Bean的名称
- @Autowired注解也可以应用在数组类型的属性上,此时Spring将会把所有匹配的Bean进行自动装配
- Autowired注解可以应用在集合属性上,此时Spring读取该集合的类型信息,自动装配所有与之兼容的Bean
- Aurowired注解用在java.util.Map上,Map的键值为String,那么Spring将自动匹配与之兼容的Bean
@Resource和@Inject和@Autowired功能相类似建议使用@Autowired
- Spring Bean配置细节author: 惠惠
- Spring Bean配置细节
- spring Bean属性配置细节
- Spring-3:bean的属性配置细节
- spring之bean的配置细节
- spring配置bean的细节一
- spring配置bean的细节二
- spring 3 bean配置--注入属性配置细节(1)
- spring 4 bean配置--注入属性配置细节(2)
- spring bean创建细节
- Spring中使用xml配置bean的细节
- spring之bean的配置细节(二)
- J2EE之Spring中Bean的配置细节
- Spring框架的Bean细节
- spring学习笔记00 helloword-IOC&DI概述-配置bean-属性配置细节
- spring学习笔记(3)——bean配置细节注意
- spring学习日志之二Bean的配置的细节和解析
- spring学习总结(四):IOC & DI 配置 Bean 之注入属性细节
- Oracle闪回技术详解
- Android自动化(一)之控件定位小技巧
- hadoop 2.x常用端口及查看方法
- 射线检测 手机端 判断当前点击是否为UI控件
- R.swift 让iOS项目像Android R 一样管理资源
- Spring Bean配置细节author: 惠惠
- error C2533: “WSProtocol::{ctor}”: 构造函数不能有返回类型 error C2264: “WSProtocol::WSProtocol”: 函数定义或声明中有错误
- iOS 一一 触摸事件
- 动脑学院安卓学习资料
- maven热部署
- 在Linux下安装jdk完成后,java -version显示版本不对的问题
- HDU 1258-Sum It Up
- 今天进度到了第十一讲的因子图优化,有个库需要安装
- java实体类的List转String输出(所有属性及其值)最简方法(一句代码搞定)