Spring学习笔记—最小化Spring XML配置
来源:互联网 发布:淘宝原单是真的吗 编辑:程序博客网 时间:2024/05/01 19:40
spring学习笔记—最小化Spring XML配置
自动装配(autowiring)有助于减少甚至消除配置<property>元素和<constructor-arg>元素,让Spring自动识别如何装配Bean的依赖关系。
自动检测(autodiscovery)比自动装配更进了一步,让Spring能够自动识别哪些类需要被配置成Spring Bean,从而减少对<bean>元素的使用。
1.自动装配属性
1.1 4种类型的自动装配
● byName——把与Bean的属性具有相同名字(或者ID)的其他Bean自动装配到Bean的对应属性中。如果没有跟属性的名字相匹配的Bean,则该属性不进行装配。● byType——把与Bean的属性具有相同类型的其他Bean自动装配到Bean的对应属性中。如果没有跟属性的类型相匹配的Bean,则该属性不被装配。
● constructor——把与Bean的构造器入参具有相同类型的其他Bean自动装配到Bean构造器的对应入参中。
● autodetect——首先尝试使用constructor进行自动装配。如果失败,在尝试使用byType进行自动装配。
byName自动装配:
为属性自动装配ID与该属性的名字相同的Bean。
byType自动装配:
如果Spring寻找到多个Bean,它们的类型与自动装配的属性类型都相匹配,Spring不会猜测哪一个Bean更适合自动装配,而是会抛出异常。
可以为自动装配标识一个首选Bean,或者可以取消某个Bean自动装配的候选资格。为了使用primary属性,不得不将非首选Bean的primary属性设置为false。
可以为自动装配标识一个首选Bean,或者可以取消某个Bean自动装配的候选资格。为了使用primary属性,不得不将非首选Bean的primary属性设置为false。
如果希望排除某些Bean,可以设置这些Bean的autowire-candidate属性为false。
constructor自动装配:
如果要通过构造器注入来配置Bean,可以移除<constructor-arg>元素,由Spring在应用上下文中自动选择Bean注入到构造器入参中。
最佳自动装配:
1.2 默认自动装配
2 .使用注解装配
Spring容器默认禁用注解装配。启用注解装配最简单的方式是使用Spring的context命名空间配置中的<context:annotation-config>元素。
Spring 3 支持几种不同的用于自动装配的注解:
● Spring自带的@Autowired注解;
● JSR-330的@Inject注解;
● JSR-250的@Resource注解。
2.1 使用@Autowired
可以使用@Autowired注解直接标注属性,并删除setter方法:
默认情况下,@Autowired所标注的属性或参数必须是可以装配的。如果没有Bean可以装配到@Autowired所标注的属性或参数中,自动装配就会失败(抛出NoSuchBeanDefinitionException).
可以通过设置@Autowired的required属性为false来配置自动装配是可选的。
2)限定歧义性的依赖
@Qualifier注解缩小了自动装配挑选候选Bean的范围,通过指定Bean的ID把选择范围缩小到只剩下一个Bean。
3)创建自定义的限定器(Qualifier)
2.2 借助@Inject实现基于标准的自动装配
@Inject没有required属性。限定@Inject所标注的属性。
创建自定义的JSR-330 Qualifier
2.3 在注解注入中使用表达式
3.自动检测Bean
使用<context:component-scan>元素配置自动检测。
3.1为自动检测标注Bean
默认情况下,<context:component-scan>查找使用构造型(stereotype)注解所标注的类,这些特殊的注解如下:@Component——通用的构造型注解,标识该类为Spring组件。
@Controller——标识将该类定义为Spring MVC Controller。
@Repository——标识将该类定义为数据仓库。
@Service——标识将该类定义为服务。
使用@Component标注的任意自定义注解。
3.2 过滤组件扫描
通过为<context:component-scan>配置<context:include-filter>和<context:exclude-filter>子元素,可以随意调整扫描行为。4.使用Spring基于Java的配置
4.1 定义一个配置类
@Configuration注解会作为一个标识告知Spring:这个类将包含一个或多个Spring Bean的定义。4.2 声明一个简单的Bean
0 0
- Spring学习笔记—最小化Spring XML配置
- Spring学习笔记—最小化Spring XML配置
- Spring学习笔记之最小化xml配置
- 最小化Spring XML配置
- 最小化Spring XML配置
- Spring--最小化XML配置
- Spring笔记---最小化Spring配置
- Spring in Action(第三章 最小化 Spring XML配置)学习笔记
- spring in action-最小化spring XML配置
- [Spring]04_最小化Spring XML配置
- 《Spring实战》学习笔记-第三章:最小化SpringXML配置
- 《Spring实战》学习笔记-第三章:最小化SpringXML配置
- 第3章 最小化Spring XML配置
- Spring(三) 最小化XML配置
- (笔记)Spring实战_最小化Spring XML配置(1)_自动装配Bean属性
- (笔记)Spring实战_最小化Spring XML配置(2)_使用注解装配
- (笔记)Spring实战_最小化Spring XML配置(3)_自动检测Bean
- (笔记)Spring实战_最小化Spring XML配置(4)_使用Spring基于Java的配置
- 解决数据库乱码问题
- 移动端仿钉钉打卡可以左右滑动的日历
- 正则表达式分组例子
- markdown语法
- Same Tree
- Spring学习笔记—最小化Spring XML配置
- 图片验证码生成
- 【LeetCode】87. Scramble String
- Oracle CASE WHEN 用法介绍
- mysql数据库(1)
- Spring + Maven + Dubbo + MyBatis + Linner + Handlebars-Web开发环境搭建
- 通过Python实现定时器和利用魔法方法改善友好交互
- Best Time to Buy and Sell Stock
- InteliJ Idea 2017.1 for Mac 版 objc[4163]: Class JavaLaunchHelper is implemented in both XXX提示