Spring in Action --- 第二章 装配Bean
Spirng配置的可选方案
- 在XML中进行显示配置
- 在Java中进行显示配置
- 隐式的bean发现机制和自动装配
bean装配
1. 在希望被扫描到的类上加注解 @Component
2. 基于不同的配置方案选择不同的方式配置
| 方式 | 方法 |
|---|---|
| 基于Java的配置 | 1. 定义一个Java类,使用注解@Configuration将其定义为一个配置类 2.再加入注解@ComponentScan,如果没有其他配置的话,默认会扫描与配置类相同的包 |
| 基于XML的隐式配置 | 在XML中加入 <context:compoent-scan base-package="" /> 其中base-package指定扫描的范围 |
| 基于XML的显示配置 | 在XML中加入 <bean id="" class=""/> 即可 |
3.为组件扫描的bean命名
如果bean不是通过XML显示的给定ID,Spring会根据类名为其指定一个ID,规则是将雷鸣的第一个字母变为小写
4.默认情况下,Spring中的bean都是单例的
当不同的方法调用相同的类实例时, Spring会拦截对其的调用并确保返回的是Spring创建的实例
5.使用XML配置bean
使用XML配置bean的时候,如果没有显示的给定一个ID,bean将会根据全限定类名进行命名,并且后面会跟上#和数字.例如 <bean class="example.test" /> ,它的ID为 example.test#0,如果有另一个class相同的bean,会被命名为example.test#1
6.使用XML注入初始化bean
- 构造器注入
假设我们已经初始化了个bean, id为test, 使用以下方式注入到你希望初始化的地方
<bean id="..." class="...">
<constructor-arg ref="test" />
</bean>
如果在 constructor-arg 中使用value="",则表示注入常量
- 属性注入
假设我们已经初始化了个bean, id为test, 使用以下方式注入到你希望初始化的地方
<bean id="..." class="...">
<property name="..." ref="test" />
</bean>
name表明你希望被注入的属性名称
如果在 property 中使用value="",则表示注入常量
注解使用
@Compont
- @Compont("...") 为bean定义一个ID
@CompontScan
- @CompontScan("...") 或 @CompontScan(basePackages = "...") 设置基础包,允许设置多个基础包,设置为数组即可(@CompontScan(basePackages = "{...}"))
- @CompontScan(basePackageClasses = {*.class, *.class}) 使用类来设置基础包,这些类所在的包将会作为组件扫描的基础包
@Autowired
实现自动装配,可以用在属性,构造器,任何方法上,但是我们常用的方式是放在属性上
如果有些bean不是必须的,可以讲required属性设置为false
@Import
@Import(*.class) 将多个配置项组装在一起,请注意,这里也可以使用数组
@ImportResource
引入XML配置文件
Spring的 c- 命名空间和 p- 命名空间
不常用,详情请翻到书本 P53和 P57
Spring in Action --- 第二章 装配Bean的更多相关文章
- 《Spring in action》之装配Bean
创建应用对象之间协作关系的行为通常称为装配,这也是依赖注入的本质. Spring装配Bean的三种主要机制: 1.在XML中进行显示配置 2.在java中进行显示配置 3.隐式的bean发现机制和自动 ...
- spring在IoC容器中装配Bean详解
1.Spring配置概述 1.1.概述 Spring容器从xml配置.java注解.spring注解中读取bean配置信息,形成bean定义注册表: 根据bean定义注册表实例化bean: 将bean ...
- (转)java之Spring(IOC)注解装配Bean详解
java之Spring(IOC)注解装配Bean详解 在这里我们要详细说明一下利用Annotation-注解来装配Bean. 因为如果你学会了注解,你就再也不愿意去手动配置xml文件了,下面就看看 ...
- Spring入门2. IoC中装配Bean
Spring入门2. IoC中装配Bean 20131125 前言: 上一节学习了Spring在JavaProject中的配置,通过配置文件利用BeanFactory和ApplicationConte ...
- Spring常用注解,自动扫描装配Bean
1 引入context命名空间(在Spring的配置文件中),配置文件如下: xmlns:context="http://www.springframework.org/schema/con ...
- Spring实战——通过Java代码装配bean
上篇说的是无需半行xml配置完成bean的自动化注入.这篇仍然不要任何xml配置,通过Java代码也能达到同样的效果. 这么说,是要把上篇的料拿出来再煮一遍? 当然不是,上篇我们几乎都在用注解的方式如 ...
- 第02章-装配Bean
1. Spring配置的可选方案 在XML中进行显式配置: 在Java中进行显式配置: 隐式的bean发现机制和自动装配. 2. 自动化装配bean Spring从两个角度来实现自动化装配: 组件扫描 ...
- Spring学习指南-第二章-Spring框架基础(完)
第二章 Spring框架基础 面向接口编程的设计方法 在上一章中,我们看到了一个依赖于其他类的POJO类包含了对其依赖项的具体类的引用.例如,FixedDepositController 类包含 ...
- Spring学习系列(二) 自动化装配Bean
一.Spring装配-自动化装配 @Component和@ComponentScan 通过spring注解(@Component)来表明该类会作为组件类,并告知Spring要为这类创建bean,不过组 ...
随机推荐
- JavaScript中Null和Undefined的深渊
探索JavaScript中Null和Undefined的深渊 当讨论JavaScript中的原始数据类型时,大多数人都知道的基本知识,从String,Number到Boolean.这些原始类型相当简单 ...
- api的安全问题
在给第三方系统提供api时,我们需要注意下安全问题. 比较常见的接口有http接口.以http接口为例.我们需要注意的几点: 1.只有被允许的系统才可以调用api 2.如果http请求被截获.也不 ...
- [转]Adventures in Xen exploitation
Source:https://www.nccgroup.com/en/blog/2015/02/adventures-in-xen-exploitation/ tl;dr This post is ...
- linux网络编程(一)
一.概念介绍 网络程序分为服务端程序和客户端程序.服务端即提供服务的一方,客户端为请求服务的一方.但实际情况是有些程序的客户端.服务器端角色不是这么明显,即互为客户端和服务端. 我们编写网络程序时,一 ...
- js漫谈
不久前在武汉这边找到了自己的第一份软件方面工作,当时还很欢喜,可惜最后因为家里的事情,公司的情况等等,最近又成了待业状态,正好安静的考虑一下以后怎么走,是考研还是继续找工作,非计算机专业学生自学找软件 ...
- C# 从Excel2003将数据导入到SQL2005,数据发生截断的问题分析
C# 从Excel2003将数据导入到SQL2005,数据发生截断的问题分析 问题描述:大家没有遇到过这种情况使用自己编写的工具读取Excel2003文件中的数据,然后执行插入语句将数据批量导入到SQ ...
- .net SoapHeader验证
.net SoapHeader验证 在工作中经常用到webservice,在.net 开发中经常用到webservice,在java开发经常用到cxf. 今天闲置没事就介绍下 .net webserv ...
- 使用Struts2实现文件的上传和下载
(一)单个文件的上传步骤: 1.拷贝jar包:commons-fileupload.jar, commons-io.jar 下载链接(文件上传.rar):http://www.cnblogs.com ...
- 回收站引发ORACLE查询表空间使用缓慢
一个哥们问我 ,他们查询 表空间使用率 跑了一个多小时,这个太坑爹了,让我 帮忙优化一下. SQL语句如下 select * from ( select ts.tablespace_name,ts.c ...
- AJAX实现无刷新验证用户名
register.php <html> <head> <meta http-equiv="content-type" content="te ...