java spring 注解引入_Spring之基于注解的注入

对于DI使用注解,将不再需要在Spring配置文件中声明Bean实例。Spring中使用注解,需要在原有Spring运行环境基础上再做一些改变,完成以下三个步骤。

(1)导入AOP的Jar包。因为注解的后台实现用到了AOP编程。

(2)需要更换配置文件头,即添加相应的约束。

(3)需要在Spring配置文件中配置组件扫描器,用于在指定的基本包中扫描注解。

1326dace30d3505973703b1ffb960dce.png

1、定义Bean@Component

需要在类上使用注解@Component,该注解的value属性用于指定该bean的id值。

举例:di01

082afd7146c222359a5404cde6e87ec6.png

另外,Spring还提供了3个功能基本和@Component等效的注解:

 @Repository 用于对DAO实现类进行注解

 @Service 用于对Service实现类进行注解

 @Controller 用于对Controller实现类进行注解

之所以创建这三个功能与@Component等效的注解,是为了以后对其进行功能上的扩展,使它们不再等效。

2、Bean的作用域@Scope

需要在类上使用注解@Scope,其value属性用于指定作用域。默认为singleton。

举例:di01

0063bbc1a141dbe7f8cd3cb53d5ee694.png

3、基本类型属性注入@Value

需要在属性上使用注解@Value,该注解的value属性用于指定要注入的值。

使用该注解完成属性注入时,类中无需setter。当然,若属性有setter,则也可将其加到setter上。

8ea48230a2e17642f3c6d68d82cf0a4c.png

4、按类型注入域属性@Autowired,@Autowired是spring的注解

需要在域属性上使用注解@Autowired,该注解默认使用按类型自动装配Bean的方式。

使用该注解完成属性注入时,类中无需setter。当然,若属性有setter,则也可将其加到setter上。

09c84f16d0efea3d9999c5f4c458541f.png

ffe432765e890d70aa31b0aeb882540c.png

5、按名称注入域属性@Autowired与@Qualifier

需要在域属性上联合使用注解@Autowired与@Qualifier。@Qualifier的value属性用于指定要匹配的Bean的id值。同样类中无需setter,也可加到setter上。

de0ea15449a554a83efd1419b32b51fc.png

@Autowired还有一个属性required,默认值为true,表示当匹配失败后,会终止程序运行。若将其值设置为false,则匹配失败,将被忽略,未匹配的属性值为null。

0d527e3d6488b8593ffb5c9df34742f0.png

6、域属性注解@Resource,也就是说@Resource是java自带的注解

Spring提供了对JSR-250规范中定义@Resource标准注解的支持。@Resource注解既可以按名称匹配Bean,也可以按类型匹配Bean。使用该注解,要求JDK必须是6及以上版本。

(1)按类型注入域属性

@Resource注解若不带任何参数,则会按照类型进行Bean的匹配注入。

举例:di04

5a53668810004f4636f538f64d74f909.png

(2)按名称注入域属性

@Resource注解指定其name属性,则name的值即为按照名称进行匹配的Bean的id。

举例:di05

b79d3459f59b68c279bad6053b219048.png

7、Bean的生命始末@PostConstruct与@PreDestroy

在方法上使用@PostConstruct,与原来的init-method等效。在方法上使用@PreDestroy,与destroy-method等效。

7369c831899c2f1b1e7d551a57fd739f.png

8、使用JavaConfig进行配置(替代的是applicationContext.xml)

JavaConfig,是在Spring 3.0开始从一个独立的项目并入到Spring中的。JavaConfig可以看成一个用于完成Bean装配的配置文件,只不过是程序员使用Java自己编写的。

举例:di06包

a9b01cc8bcd7c9d5cfed436e893b125c.png

c3fc9bdc8175a92732da010be898294f.png

9d0fd66fc1512197af697ad83bf76995.png

8edb49ab5edd55a92b85ec2a6e4975c2.png

9.使用junit4测试Spring

创建一个普通POJO类作为测试类。

需要在三个位置添加注解。

 在类头添加两个注解:

@RunWith(SpringJUnit4ClassRunner.class):用于指定运行环境

@ContextConfiguration(locations=“”):用于指定配置文件位置

将要测试的对象声明为成员变量,并在其头上添加注解。

在测试方法头上添加注解。

5dee098d616de9cf4a6d516ff97f49a4.png

总结:注解与XML共同使用注解的好处是,配置方便,直观。但其弊端也显而易见:以硬编码的方式写入到了Java代码中,其修改是需要重新编译代码的。

XML配置方式的最大好处是,对其所做修改,无需编译代码,只需重启服务器即可将新的配置加载。

若注解与XML同用,XML的优先级要高于注解。这样做的好处是,需要对某个Bean做修改,只需修改配置文件即可。当然,此时,Bean类要有setter或构造器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值