Spring注解

项目中使用注解方式

  • spring配置文件中,配置上下文组件扫描器<context:component-scan base-package="com.xmy.gte.web" />
  • 在配置扫描器的范围中就可以使用spring支持的注解了

Spring支持(以下列出常用注解)
1、自己定义的注解
类、方法。控制层,用来配置请求url
@RequestMapping
类上的注解
@Component 组件
@Repository 数据访问层
@Service 业务层
@Controller 控制层
成员变量、方法
@Autowired 注入bean,默认按byType策略注入,联合@Qualifier后按照byName策略注入
成员变量、方法参数
@Qualifier 区分相同类型的不同实现或者实例
方法。便是异步请求的方法体
@ResponseBody
下面的不太明白用法,待后续补充
@Value
@Required
2、支持JSR-250 的注解
@Resource 注入bean,默认按byName策略注入,用法同@Autowired
@PostConstruct 容器启动注入bean执行,常用来初始化配置数据
@PreDestroy bean被销毁前执行


Spring注入时可能出现的问题
1、找不到抛出异常
在默认情况下使用 @Autowired (按byType注入)注释进行自动注入时,Spring 容器中匹配的候选 Bean 数目必须有且仅有一个。当找不到一个匹配的 Bean 时,Spring 容器将抛出BeanCreationException 异常,并指出必须至少拥有一个匹配的 Bean。
2、不确定容器是否有某个类,不希望spring启动报错
当不能确定 Spring 容器中一定拥有某个类的 Bean 时,可以在需要自动注入该类 Bean 的地方可以使用 @Autowired(required = false),这等于告诉 Spring:在找不到匹配 Bean 时也不报错。
3、多个类型相同的bean注入,无法匹配报错
Spring 容器中配置了两个类型为 Office 类型的 Bean,当对 Boss 的 office 成员变量进行自动注入时,Spring 容器将无法确定到底要用哪一个 Bean,因此异常发生了。
Spring 允许我们通过 @Qualifier 注释指定注入 Bean 的名称,这样歧义就消除了
@Qualifier(“office”) 中的 office 是 Bean 的名称,所以 @Autowired 和@Qualifier 结合使用时,自动注入的策略就从 byType 转变成 byName 了。@Autowired 可以对成员变量、方法以及构造函数进行注释,而@Qualifier 的标注对象是成员变量、方法入参、构造函数入参。正是由于注释对象的不同,所以 Spring 不将 @Autowired 和@Qualifier 统一成一个注释类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值