Spring常用注解

前言

  分析Spring的常用注解之前,需先了解何为注解?注解是用于给Java代码附加元数据,可在编译或运行时解析并处理这些元数据。注解是一种分散式的元数据,与源代码紧紧绑定。提到注解,就不得不提XML,XML同样也是用于给Java代码附加元数据,也可在编译或运行时解析并处理这些元数据。不同的是XML是一种集中式的元数据,与源代码无绑定。

  那么,在Spring开发时为什么更多使用注解而非XML?

  首先,注解具有独特的优势:保存在 class 文件中,降低维护成本。 无需工具支持,无需解析。 编译期即可验证正确性,查错容易。 提升开发效率。

  其次,XML使用具有一定局限性:需要解析工具或类库的支持,解析XML势必会影响应用程序性能,占用系统资源。 配置文件过多导致管理变得困难。 编译期无法对其配置项的正确性进行验证,或要查错只能在运行期。 IDE无法验证配置项的正确性,查错困难。开发人员需同时维护代码和配置文件,开发效率变得低下。 配置项与代码间存在潜规则,改变了任何一方都有可能影响另外一方。

  接下来,我们共同探讨Spring的常用注解及其含义。

一、将类声明成Bean的注解:

  @Component:通用的注解,可标注任意类为Spring组件。如果一个 Bean 不知道属于哪个层,可以使用@Component注解标注。

  @Repository :对应持久层即DAO层,主要用于数据库相关操作。

  @Service :对应业务层,主要涉及一些复杂的逻辑,需要调用DAO层。

  @Controller :对应Spring MVC 控制层,主要用户接受用户请求,并调用Service层返回数据给前端页面。

二、基于注解的自动装配:

  @Component:声明组件。

  @Componentscan:组件扫描。

  @Autowired :按类型自动注入,启用自动装配。

  @Qualifier:按名称自动注入,不能单独使用,与@Autowired联合使用。

  @Primary:标示首选的bean。

  @Resource:默认按名称注入,当无法找到与之匹配的名称时转为按类型注入。

  @Value:注入数据,只能注入基本类型与String。

三、基于Java代码的显式装配

  @Configuration :声明配置类。

  @Bean:方法级别注解,声明配置该方法所产生的对象为Spring中的Bean。

四、配置类相关注解

  @Import:导入其他配置类。

  @ImportResource:导入其他XML配置文件。

  @Scope:表示bean的作用域。其设置类型包括:

  • singleton (单例模式,一个Spring容器中只有一个Bean实例,默认模式)
  • protetype(每次都会创建一个新的Bean实例)
  • request (为每个HTTP请求创建一个Bean实例)
  • session(为每个HTTP会话创建一个Bean实例)
  • application (为每个ServletContext创建一个Bean实例)
  • websocket (为每个Websocket 创建一个Bean实例)

  @WishlyConfiguration 为@Configuration与@ComponentScan的组合注解,可以替代这两个注解。

五、AOP和AspectJ相关注解

  @Aspect:声明切面,作用是把当前类标识为一个切面供容器读取。

  @PointCut :声明切点,是植入Advice(通知)的触发条件。

  @Around:通知方法会将目标方法封装起来。

  @Before:通知方法会在目标方法调用之前执行。

  @After:通知方法会在目标方法返回或抛出异常后调用。

  @AfterReturning:通知方法会在目标方法返回后调用。

  @AfterThrowing:通知方法会在目标方法抛出异常后调用。

六、启用特性的注解:

  @Enablescheduling:启用任务调度。

  @EnableAspectJAutoProxy :启用AspectJ自动代理。

  @EnableSwagger2:开启API文档。

  @EnableEncryptableProperties:开启加密。

  @EnableTransactionManagement:开启对注解式事务的支持。

  @EnableAsync:开启异步任务。

  @EnableJpaRepositories:开启对SpringData JPA Repository的支持。

  @EnableCaching:开启注解式的缓存支持。

  @EnableJpaRepositories:开启对SpringData JPA Repository的支持。

七、其他注解

  @PostConstruct:用于指定初始化方法。

  @PreDestory:用于指定销毁方法。

  @ControllerAdvice:全局数据处理。

  @Conditional:条件选择,决定该Bean是否被实例化。

  @Profil: 通过设定Environment的ActiveProfiles来设定当前context需要使用的配置环境。

  @Async:在实际执行的Bean方法使用该注解来申明其是一个异步任务。

  @Scheduled :声明这是一个调度任务。

  @Transactional:标注在类或方法上,代表该类或方法都进行事务管理。

  @RunWith:运行器,Spring中通常用于对JUnit的支持。

  @ContextConfiguration:整合JUnit时,用于指定Spring配置文件的位置。

  @PropertySource:加载配置文件,指定properties配置文件的位置。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值