Spring中Beans的自动装配概述
以下内容引用自http://wiki.jikexueyuan.com/project/spring/beans-autowiring.html:
在之前的做法上会参照这样的顺序:1、使用<bean>元素声明bean,2、并使用XML配置文件中的<constructor-arg>和<property>元素注入<bean>。但现在可以将以往的做法升级,比如Spring容器可以在不使用<constructor-arg>和<property>元素的情况下在协作bean之间实现自动关联,这有助于减少为大型基于Spring的应用程序编写的XML配置数量。
自动装配模式
以下是自动装配模式,可用于指示Spring容器使用自动连线进行依赖注入。您使用<bean />元素的autowire属性为bean定义指定自动连接模式。
| 模式 | 描述 |
|---|---|
| no | 这是默认的设置,它意味着没有自动装配,你应该使用显式的bean引用来连线。你不用为了连线做特殊的事。 |
| byName | 由属性名自动装配。Spring 容器看到在XML配置文件中bean的自动装配的属性设置为byName。然后尝试匹配,并且将它的属性与在配置文件中被定义为相同名称的beans的属性进行连接。 |
| byType | 由属性数据类型自动装配。Spring容器看到在XML配置文件中bean的自动装配的属性设置为byType。然后如果它的类型匹配配置文件中的一个确切的bean名称,它将尝试匹配和连接属性的类型。如果存在不止一个这样的bean,则一个致命的异常将会被抛出。 |
| constructor | 类似于byType,但该类型适用于构造函数参数类型。如果在容器中没有一个构造函数参数类型的bean,则一个致命错误将会发生。 |
| autodetect | 自动侦查,Spring首先尝试通过constructor使用自动装配来连接,如果它不执行,Spring尝试通过byType来自动装配。 |
你可以使用byType或者constructor自动装配模式来连接数组和其他类型的集合。
自动装配的局限性
当自动装配始终在同一个项目中使用时,它的效果是最好的。如果不使用自动装配,它可能会使开发人员混淆的使用它来连接只有一个或两个bean定义。不过,自动装配可以显著减少需要指定的属性或构造器参数,但你应该在使用它们之前考虑到自动装配的局限性和缺点。
| 限制 | 描述 |
|---|---|
| 重写的可能性 | 您仍然可以使用<constructor-arg>和<property>设置指定依赖关系,这些设置将始终覆盖自动装配。 |
| 原始数据类型 | 你不能自动装配所谓的简单类型包括基本类型,字符串和类。 |
| 混乱的本质 | 自动装配不如显式装配精确,所以如果可能的话尽可能使用显式装配。 |
Spring中Beans的自动装配概述的更多相关文章
- 在Spring中通过构造自动装配--constructor
在Spring中,可以使用“通过构造自动装配”,实际上是按构造函数的参数类型自动装配. 这意味着,如果一个bean的数据类型与其他bean的构造器参数的数据类型是相同的,那么将自动装配. packag ...
- Spring学习--xml 中 Bean 的自动装配
Spring IOC 容器可以自动装配 Bean. 只要在 <bean> 的 autowire 属性里指定自动装配的模式. byName(根据名称自动装配):必须将目标 Bean 的名称和 ...
- [原创]java WEB学习笔记99:Spring学习---Spring Bean配置:自动装配,配置bean之间的关系(继承/依赖),bean的作用域(singleton,prototype,web环境作用域),使用外部属性文件
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Spring学习(六)-----Spring使用@Autowired注解自动装配
Spring使用@Autowired注解自动装配 在上一篇 Spring学习(三)-----Spring自动装配Beans示例中,它会匹配当前Spring容器任何bean的属性自动装配.在大多数情况下 ...
- Spring@Autowired注解与自动装配
1 配置文件的方法 我们编写spring 框架的代码时候.一直遵循是这样一个规则:所有在spring中注入的bean 都建议定义成私有的域变量.并且要配套写上 get 和 set方法. Boss ...
- 【转】Spring@Autowired注解与自动装配
1 配置文件的方法 我们编写spring 框架的代码时候.一直遵循是这样一个规则:所有在spring中注入的bean 都建议定义成私有的域变量.并且要配套写上 get 和 set方法. Boss ...
- Spring@Autowired注解与自动装配(转发)
1 配置文件的方法 我们编写spring 框架的代码时候.一直遵循是这样一个规则:所有在spring中注入的bean 都建议定义成私有的域变量.并且要配套写上 get 和 set方法. Boss ...
- Spring基于的注解自动装配和依赖注入(***)
#自动装配的小Demo: package com.gyf.annotation; //DAO层 public interface UserDao { public void save(); } pac ...
- 8 -- 深入使用Spring -- 7...4 使用自动装配
8.7.4 使用自动装配 在自动装配策略下,Action还是由Spring插件创建,Spring 插件在创建Action实例时,利用Spring的自动装配策略,将对应的业务逻辑组件注入Action实例 ...
随机推荐
- clipboard 在 vue 中的使用
简介 页面中用 clipboard 可以进行复制粘贴,clipboard能将内容直接写入剪切板 安装 npm install --save clipboard 使用方法一 <template&g ...
- Taro:使用taro完成小程序开发
前言:taro是一个可以很好实现一次开发,多端统一的框架,本文只介绍它小程序端开发的一些内容.小程序项目搭建gitup已经有很清楚的说明:https://github.com/NervJS/taro ...
- Python 基本数据类型 (二) - 字符串
str.expandtabs([tabsize]): str类型的expandtabs函数,有一个可选参数tabsize(制表符大小) 详细来说,expandtabs的意思就是,将字符串中的制表符\t ...
- Codeforces Round #877 (Div. 2) E. Danil and a Part-time Job
E. Danil and a Part-time Job 题目链接:http://codeforces.com/contest/877/problem/E time limit per test2 s ...
- Untiy CurvedUI 的使用的bug修正
本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/51996538 作者:car ...
- Java使用Robot完成QQ轰炸机
效果 网上吵架吵不过别人怎么办?女朋友让你从1数到10000怎么办?想恶搞朋友怎么办?QQ轰炸机你值得拥有!(注:为了更好的学习编程,敲的练手项目,仅作学习使用) 自定义发送内容,自定义发送条数,&q ...
- MySQL外键设置 级联删除
. cascade方式在父表上update/delete记录时,同步update/delete掉子表的匹配记录 . set null方式在父表上update/delete记录时,将子表上匹配记录的列设 ...
- 【03】图解原型和原型链by魔芋
[03]图解原型和原型链 一图胜前言 请先结合图解原型和原型链这张图. 可以分为4种情况. 情况1: Object有: constructor:是Function. __pro ...
- 图论trainning-part-2 C. The Largest Clique
C. The Largest Clique Time Limit: 3000ms Memory Limit: 131072KB 64-bit integer IO format: %lld ...
- HDU-4417 Super Mario,划分树+二分!
Super Mario 这个题也做了一天,思路是很清晰,不过二分那里写残了,然后又是无限RE.. 题意:就是查询区间不大于k的数的个数. 思路:裸划分树+二分答案.将区间长度作为二分范围.这个是重点. ...