Spring 注解

组件注册:@Component @Repository @Service @Controller

作用域:类
启用包扫描后,包及子包下的类如果使用了这些注解,则会被实例化到Spring容器中,作为组件,可以在其它组件中作为依赖注入。
@Component是任何Spring管理的组件或bean的通用构造型。
@Repository是持久层的构造型。
@Service是服务层的构造型。
@Controller是表示层(spring-MVC)的构造型。

配置:@Configuration

作用域:类
对于配置类,可以在方法上使用@Bean注解,Spring会调用该方法,将返回值作为组件。

配置导入:@Import

配置类可以导入其它的配置类,不需要把所有的 @Configuration 放到一个类中。
@Enable...注解就是通过@Import导入了默认的配置类。

@Import(value = [Hibernate::class, Other::class]) // 或者
@Import(Hibernate::class, Other::class)
class WebConfig : WebMvcConfigurer { ... }

@Bean及其条件化、作用域

@Bean的装配可以是条件控制的,比如在测试环境下使用@Profile注解控制Bean是否应该激活,然后使用@ActiveProfiles注解设置激活profile。

  • @Conditional
    Spring 4引入了一个新的@Conditional注解,它可以用到带有@Bean注解的方法上。如果给定的条件计算结果为true,就会创建这个bean,否则的话,这个bean会被忽略。设置给@Conditional的类可以是任意实现了Condition接口的类型。可以看出来,这个接口实现起来很简单直接,只需提供matches()方法的实现即可。如果matches()方法返回true,那么就会创建带有@Conditional注解的bean。如果matches()方法返回false,将不会创建这些bean。
  • @Primary
    标示首选的bean。
  • @Scope
    Spring定义了多种作用域,可以基于这些作用域创建bean,包括:
单例(Singleton):  在整个应用中,只创建bean的一个实例。默认。
原型(Prototype):  每次注入或者通过Spring应用上下文获取的时候,都会创建一个新的bean实例。
会话(Session):    在Web应用中,为每个会话创建一个bean实例。
请求(Rquest):     在Web应用中,为每个请求创建一个bean实例。

@Scope接收一个字符参数,但是最好使用常量,定义在类ConfigurableBeanFactory的SCOPE_xxx域中。

@ResponseBody @RequestBody

申请由消息转换器处理内容,即处理参数及返回值。

ControllerAdvice

posted @ 2020-04-20 14:55  develon  阅读(95)  评论(0编辑  收藏  举报