资讯专栏INFORMATION COLUMN

使用Spring annotation编程的快感

BWrong / 3396人阅读

摘要:创建应用对象之间协作关系的行为通常称为装配中有三种装配的方法在中显式配置在中显式配置隐式的发现机制和自动装配这儿要说的就是第三个自动发现与装配,它会带来编程的快感。

一、前言

Spring的Bean Factory所实现的IoC轻量级容器,可以很方便地让大家基于POJO开发JavaEE应用程序。

创建应用对象之间协作关系的行为通常称为装配

Spring中有三种装配Bean的方法

在XML中显式配置

在Java中显式配置

隐式的bean发现机制和自动装配

这儿要说的就是第三个“自动发现与装配”,它会带来编程的快感。

二、隐式的bean发现机制和自动装配

隐式配置分成两步 1、组件扫描 2、自动装配

1、组件扫描

组件扫描可以通过XML配置实现

 
 

     
2、自动装配

spring自动满足bean之间的依赖,通过Autowired来进行依赖的注入

@Component 
public class Waiter { 
    public void service(String name){ 
        System.out.println("service to " + name); 
    } 
}

@Component 
public class Store { 
    @Autowired 
    private Waiter waiter; 

    public void service(){ 
        waiter.service("kiwi"); 
    } 
}

spring中所有bean都会有一个ID,我们通过@Component设置的,自动扫描时会以类名首字母小写为ID。如果想要自定义就要设置@Component的参数。

@ComponentScan默认是扫描当前包以及子包。如果想设置其它包或者多个包,可以通过设置该注解的basePackages。但是这种是以字符串形式不利于重构。可以使用另外一个属性backPackageClasses指定某个类(开发中常用标记接口),然后spring会扫描这个类下面的包与子包。

可以使用java规范的@Named替换@Component,也可以使用java规范的@Inject去替换@Autowired

三、何来快感

工作最常用的是隐式配置,因为自动扫描非常方便,但是有些情况下只能使用显式的手动配置。比如引入一些第三方库,要想让spring管理这个bean。不可能修改它的源码。只能通过显式配置。

1、@Component @Repository @Service @Controller

默认的,以@Component @Repository @Service @Controller或者被@Component注解的自定义注解所注解的类,是唯一的自动发现候选组件。
开启组件扫描后,你想要自动装配两个对象的话,就无需配置XML了,只要在被引用的对象的类上加上注解:@Component或其它几个,然后在引用方类中,定义被引用对象的私有变量上加上注解:@Autowired,就搞定了(参考“自动装配”小节的例子)。是不是很爽。

2、抛弃@Component @Repository @Service @Controller

你甚至可以抛弃这几个自动发现候选组件。这样的话,只需要利用@Autowired注解,就可以装配相关的对象了。想象一下,你定义了许多服务类,然后你想要引用它们时,只需定义一个服务类属性,然后加上@Autowired注解,Spring框架就自动为你装配好了,是不是很爽。

不过想要抛弃这几个自动发现候选组件,你得做一点儿额外得工作,那就是配置一下filter。


    
        
    

看到没,只需要在component-scan元素中,加入include-filter子元素即可。base-package设定为你的服务类所在的namespace,type设定为regex,expression设定为你的服务类类名所满足的正则表达式。

OK搞定了。接下来你就可以只使用@Autowired注解来装配任何一个你想要的服务类了。

参考文档:http://blog.csdn.net/u0117192...
参考文档:Spring Framework Reference Document

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/70748.html

相关文章

  • 2.走向自动装配

    摘要:走向自动装配模式注解装配走向自动装配课程介绍手动装配自动装配自动装配是以手动装配为基础实现的手动装配模式注解模式注解是一种用于声明在应用中扮演组件角色的注解。 2.走向自动装配 Spring 模式注解装配 2-1 走向自动装配 课程介绍 spring framework手动装配 spring boot自动装配 spring boot自动装配是以spring framework手动装...

    rose 评论0 收藏0
  • 第一章--Spring之旅

    摘要:两种方式来表示的应用上下文。日志,事务管理和安全这样的系统服务经常融入到具有核心业务逻辑的组件中去,这些系统服务通过被称为横切关注点。容器使用管理构成应用的组件,他会创建相互协作的组件之间的关联。的生命周期四俯瞰的风景线模块,,,, 完整代码请见:https://github.com/codercuixi...为了降低Java开发的复杂性,Spring采用了以下4种策略: 基于poj...

    pkwenda 评论0 收藏0
  • 慕课网_《Spring Boot 2.0深度实践-初遇Spring Boot》学习总结

    时间:2018年04月08日星期日说明:本文部分内容均来自慕课网。@慕课网:https://www.imooc.com 教学源码:无 学习源码:https://github.com/zccodere/s... 第一章:课程介绍 1-1 课程介绍 课程内容 Spring Boot介绍 环境准备 第一个Spring Boot项目 多模块项目 打包和运行 1-2 框架定位 showImg(https...

    hqman 评论0 收藏0
  • 慕课网_《探秘Spring AOP》学习总结

    时间:2017年09月03日星期日说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com 教学源码:https://github.com/zccodere/s...学习源码:https://github.com/zccodere/s... 第一章:课程介绍 1-1 面向切面 课程章节 概览 AOP使用 AOP原理 AOP开源运用 课程实战 课程总结 面向切面编程是一种...

    Tony_Zby 评论0 收藏0
  • 第12章 元编程与注解、反射 《Kotlin 项目实战开发》

    摘要:第章元编程与注解反射反射是在运行时获取类的函数方法属性父类接口注解元数据泛型信息等类的内部信息的机制。本章介绍中的注解与反射编程的相关内容。元编程本质上是一种对源代码本身进行高层次抽象的编码技术。反射是促进元编程的一种很有价值的语言特性。 第12章 元编程与注解、反射 反射(Reflection)是在运行时获取类的函数(方法)、属性、父类、接口、注解元数据、泛型信息等类的内部信息的机...

    joyqi 评论0 收藏0

发表评论

0条评论

BWrong

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<