Bean配置(注解)
Posted *蓄势待发*
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bean配置(注解)相关的知识,希望对你有一定的参考价值。
使用注解定义bean
@Component
功能:指定对应的类为Spring控制的bean
格式:定义在类的上方,可以为类指定bean名称 定义UserDAOImpl类为Spring控制的bean,未指定名称
@Component public class UserDaoImpl implements USerDaoI{ }
定义UserDAOImpl类为Spring控制的bean,名称”userDao”
@Component("userDao") public class UserDaoImpl implements USerDaoI{ }
bean的名称可以定义多个,如@Component(“u1,u2,u3”)
Spring使用注解定义bean,IoC容器并不知道哪些 类被声明了注解,因此需要类路径下每一个类进行 扫描,并针对声明了注解的类进行加载。Spring通 过XML声明的格式,定义加入扫描的路径(多配置)
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:component-scan base-package="com.wd"></context:component-scan> </beans>
@Component衍生注解
Spring2.5+还定义了3个@Component的衍生注解, 用于在后期版本中对其功能进行深层次的扩展
@Repository 用于对数据层实现类进行标注
@Service 用于对业务逻辑层实现类进行标注
@Controller 用于对控制层实现类进行标注
目前上述三种注解与@Component功能完全相同,仅仅是 名称上的区别
使用注解定义属性注入
@Autowired(相当于proerty元素)
功能:标注类的成员变量为自动装配注入属性
格式:定义在成员变量的上方
参数:required
可选值:true(默认值)/false
作用:标识该属性是否必须注入,如果未对其指定注入的值, 则系统抛出异常
注入不同类别的属性需要使用不同的注解
简单类型:@Value
对象类型;@Qualifier
自动装配类型识别(引用类型)
① 注入属性类型为class
如果类名对应的类只有一个,注入成功 如果类名对应的类有多个,注入失败
注入属性类型为interface
如果不存在对应接口的实现类,注入失败
如果对应接口的实现类为一个,注入成功
如果对应接口的实现类为多个,注入失败
如果对应接口的实现类指定有bean名称,则按照按照属性 定义的名称进行匹配
如果存在对应名称的自动装配bean,注入成功
如果不存在对应名称的自动装配bean,注入失败
使用注解为属性注入值
1、@Qualifier
功能:为属性注入的Bean类型的值
格式:定义在成员变量的上方
注意:该注解与@Autowired配合使用
@Qualifier必须给出注入的bean的名称
如果对应的bean不存在,抛出异常,注入失败
为@Autowired指定参数required=false,避免注入失败时候 抛出异常(当不能确定 Spring 容器中一定拥有某个类的 Bean 时,可以在需要自动注入该类 Bean 的地方可以使用 @Autowired(required = false),这等于告诉 Spring:在找不到匹配 Bean 时也不报错)
使用注解@Resource为属性注入
Spring提供对JSR-250中定义@Resource标准注解 的支持。
@Resource与@Autowired功能非常相似,用于 bean的自动装配,格式略有区别
注解定义Bean的作用范围
@Scope
功能:为当前Bean指定scope参数,默认singleton
格式:定义在类的上方
以上是关于Bean配置(注解)的主要内容,如果未能解决你的问题,请参考以下文章