Spring中一些常见注解的作用

@ConditionalOnProperty

@ConditionalOnProperty 注解是 Spring Boot 提供的一种条件注解,用于根据配置文件中的属性值来决定某个 Bean 是否被加载。通过这个注解,你可以在应用程序的配置中灵活地控制 Bean 的创建。

具体来说,@ConditionalOnProperty 注解会检查指定的属性是否存在,以及其值是否符合预期。当这些条件满足时,相关的 Bean 才会被注册到 Spring 容器中。

  • name:指定要检查的属性名。
  • havingValue:属性的期望值,只有当属性的值与这个值匹配时,条件才成立(默认为 “true”)。
  • matchIfMissing:如果设置为 true,则在属性缺失的情况下条件也会匹配(默认为 false)。

@ConditionalOnProperty 是一个非常有用的工具,可以帮助你根据外部配置条件地控制 Bean 的创建,从而增强 Spring Boot 应用的灵活性和可配置性。

@RefreshScope

@RefreshScope 是 Spring Cloud Framework 中的一个注解,主要用于实现对 Spring Bean 的动态刷新能力。

  1. 动态刷新配置:
    当您使用 Spring Cloud Config 进行配置管理时,@RefreshScope 注解可以自动刷新那些需要依赖于配置的 Spring Bean。即,当配置更新后,使用此注解标记的 Bean 会在下次请求时重新加载新的配置。
  2. 与配置中心集成:
    如果应用程序连接了配置中心(例如 Spring Cloud Config Server),当你在配置中心更新了相关配置,使用了 @RefreshScope 注解的 Bean 会在调用 /actuator/refresh 端点时被重新初始化,加载最新的配置属性。

@RefreshScope 注解使得 Spring 应用可以在运行时动态刷新 Beans 中的配置值,非常适合在需要频繁调整配置的微服务架构中使用。通过该注解,您可以在不重启应用程序的情况下,轻松地管理和使用外部配置。

@EnableConfigurationProperties

@EnableConfigurationProperties 注解是 Spring Boot 中用于启用和绑定外部配置属性(通常是在 application.properties 或 application.yml 文件中定义的)到一个 Java Bean 的机制。具体来说,当你使用这个注解时,可以将指定的配置类(如 DruidProperties)和配置文件中的属性相关联,使得这些属性可以被注入并使用。

  1. 自动绑定配置: @EnableConfigurationProperties 会自动将外部配置文件中的属性与该 Java Bean 的字段进行绑定。
  2. 便于管理和使用配置: 使用这个注解,有助于集中管理应用的配置,利用类型安全的方式来获取配置属性。
  3. 支持多种数据类型: 在绑定时,Spring 支持多种数据类型的自动转换

@Conditional

@Conditional 注解是用来根据实现的 Condition 接口中的条件动态注册 Bean 的。开发者需要实现 Condition 接口,并在 matches 方法中定义具体的条件逻辑。当 Spring 容器处理带有该注解的 Bean 时,会调用该条件类的 matches 方法,如果返回 true,则注册该 Bean;如果返回 false,则不注册。

@ConditionalOnClass

@ConditionalOnClass 是 Spring Boot 提供的一个注解,专门用于根据特定类的存在与否来判断是否注册 Bean。如果指定的类(在本例中是 DruidDataSource)在类路径中存在,则条件成立,Bean 将被创建;否则,不会创建该 Bean。这种方式通常用于模块化开发,使得某些功能仅在对应的类库存在时才生效。

@ConditionalOnProperty(prefix = “spring.druid.stat-view-servlet”, name = “enabled”, havingValue = “true”)

用来控制 Bean 注册的一种条件注解。它根据应用程序的属性配置来决定一个 Bean 是否应该被创建。

  • prefix:指定属性的前缀。在本例中,“spring.druid.stat-view-servlet” 是属性的前缀,这意味着所有相关的配置项都会以此前缀开头。
  • name:指定要检查的属性的具体名称。在这个例子中,“enabled” 表示我们要查看的属性名称。
  • havingValue:指定属性的期望值。只有在属性的值与此匹配时,条件才成立。这里,如果 enabled 的值为 “true”,条件才会满足。

@Primary

用于指示某个 Bean 是优先的 Bean,当存在多个同类型的 Bean 时,Spring 容器在注入依赖时会优先选择被标记为 @Primary 的那个 Bean。

  1. **解决 Bean 的冲突:**在 Spring 应用上下文中,如果有多个模块或组件定义了相同类型的 Bean,Spring 在进行自动装配时会遇到冲突。@Primary 可以用来指定一个 Bean 作为默认的 Bean,以便在自动装配时优先被选择。
  2. **简化 Bean 选择:**当使用注入的接口或父类类型时,@Primary 可以帮助 Spring 确定使用哪个具体的实现类型,而无需明确指定 Bean 的名称。

@AutoConfigureAfter

用于自动配置类的控制机制,用于指定某个自动配置类应在另一个自动配置类之后加载。

  1. 合理的加载顺序:有时不同的配置类之间存在依赖关系,使用 @AutoConfigureAfter 可以确保被注解的类总是在指定的类之后加载,从而避免因加载顺序不当而导致的 Bean 未找到或初始化问题。
  2. 增强模块的独立性:它使得开发人员可以专注于模块的功能,而不必过多担心其他模块的加载顺序。通过注解声明依赖关系,框架会自动管理这些依赖。
  3. 用于定制自动配置: 通过指定依赖的自动配置类,可以对特定的 Beans 进行定制,确保这些 Beans 在其他相关 Beans 之后进行配置或修改。

@Accessors(chain = true)

@Accessors(chain = true) 是 Lombok 提供的一个注解,用于简化 Java 类的 getter 和 setter 方法的生成。

  1. 链式调用支持:当 chain 参数设置为 true 时,Lombok 会生成的 setter 方法返回当前对象(this),而不是 void。这使得可以在设置多个属性时,进行链式调用。
  2. 自定义命名风格:通过 @Accessors 注解,可以进一步自定义生成的 getter 和 setter 的命名风格
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿胡爱编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值