SpringBoot:如何书写一个自定义的Enable*注解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot:如何书写一个自定义的Enable*注解相关的知识,希望对你有一定的参考价值。

参考技术A 1.新建自定义的注解

2.应用此注解到配置类

3.这时候需要在EnableCustomFeature 类中通过@Import的方式引入一系列需要前置处理的Bean类

上述通过@Import方式做的原因,主要是将@Import标记的配置类中的bean作为ApplicationContext处理

使用Selector选择器启用Enable 自定义注解

示例如下:

上述示例中,自定义的注解中有一个criteria自定义注解属性字段,默认值为default,后面我们需要做的就是根据criteria的值激活两种不同的bean功能集合:

所以如果criteria字段值为 "default",就会加载SomeBeanConfigurationDefault, 否则就是加载SomeBeanConfigurationType1。

参考链接: http://www.java-allandsundry.com/2015/04/spring-enable-annotation-writing-custom.html

如何自定义一个SpringBoot Srarter


 前言

上一期我们通过学习知道了自动配置原理,其实创建一个自定义SpringBoot Starter也很简单。

目录

​如何自定义一个SpringBoot Srarter?​

​首先创建一个项目,命名为demo-spring-boot-starter,引入SpringBoot相关依赖​

​编写配置文件​

​自动装配​

​配置自动类​

​测试​


如何自定义一个SpringBoot Srarter?

首先创建一个项目,命名为demo-spring-boot-starter,引入SpringBoot相关依赖

        <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>

如何自定义一个SpringBoot

编写配置文件

这里定义了属性配置的前缀

@ConfigurationProperties(prefix = "hello")
public class HelloProperties

private String name;

//省略getter、setter

自动装配

创建自动配置类HelloPropertiesConfigure

@Configuration
@EnableConfigurationProperties(HelloProperties.class)
public class HelloPropertiesConfigure

配置自动类

在​​/resources/META-INF/spring.factories​​文件中添加自动配置类路径

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\\
cn.fighter3.demo.starter.configure.HelloPropertiesConfigure

测试

至此,随手写的一个自定义SpringBoot-Starter就完成了,虽然比较简单,但是完成了主要的自动装配的能力。

  • 创建一个工程,引入自定义starter依赖
        <dependency>
<groupId>cn.fighter3</groupId>
<artifactId>demo-spring-boot-starter</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
  • 在配置文件里添加配置
hello.name=张三
  • 测试类
@RunWith(SpringRunner.class)
@SpringBootTest
public class HelloTest
@Autowired
HelloProperties helloProperties;

@Test
public void hello()
System.out.println("你好,"+helloProperties.getName());

  • 运行结果
  • 如何自定义一个SpringBoot

  • 如何自定义一个SpringBoot

    编辑运行结果

本期分享到此为止,关注博主不迷路,叶秋学长带你上高速~~


以上是关于SpringBoot:如何书写一个自定义的Enable*注解的主要内容,如果未能解决你的问题,请参考以下文章

JpaRepository 怎么书写自定义书写删除集合通过一个字段(非主键)

如何在SpringBoot自定义一个starter

UIWebview交互之自定义传值跳转

SpringBoot 如何自定义自己的条件注解与自动配置?

如何自定义一个长度可变数组

自定义SpringBoot Starter 实现请求日志打印