首页 > 其他分享 >八、Spring Boot 实现一个自定义start

八、Spring Boot 实现一个自定义start

时间:2022-09-05 18:46:11浏览次数:79  
标签:return name 自定义 Spring Boot spring msg public String

http://springboot.javaboy.org/2019/0520/springboot-starter

starter的作用

用来做依赖导入、自动配置

Starter 的核心就是条件注解 @Conditional

当 classpath 下存在某一个 Class 时,某个配置才会生效

实现:

1.新建一个maven项目添加Starter 的自动化配置类:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-autoconfigure</artifactId>
    <version>2.1.4.RELEASE</version>
</dependency>

2.创建一个 HelloProperties 类,用来接受 application.properties 中注入的值

@ConfigurationProperties(prefix = "javaboy")
public class HelloProperties {
    private static final String DEFAULT_NAME = "江南一点雨";
    private static final String DEFAULT_MSG = "牧码小子";
    private String name = DEFAULT_NAME;
    private String msg = DEFAULT_MSG;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
}

3.新建一个service方法

public class HelloService {
    private String msg;
    private String name;
    public String sayHello() {
        return name + " say " + msg + " !";
    }
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

4.定义自动化配置类

@Configuration //明这是一个配置类
@EnableConfigurationProperties(HelloProperties.class) // 使@ConfigurationProperties 生效
@ConditionalOnClass(HelloService.class) // 当项目当前 classpath 下存在 HelloService 时,后面的配置才生效
public class HelloServiceAutoConfiguration {
    @Autowired
    HelloProperties helloProperties;

    @Bean
    HelloService helloService() {
        HelloService helloService = new HelloService();
        helloService.setName(helloProperties.getName());
        helloService.setMsg(helloProperties.getMsg());
        return helloService;
    }
}
  1. 新增 spring.factories 文件
    在Maven 项目的 resources 目录下创建一个名为 META-INF 的文件夹,然后在文件夹中创建一个名为 spring.factories 的文件,文件内容:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=org.javaboy.mystarter.HelloServiceAutoConfiguration

添加 spring.factories 文件的原因:
从项目启动的加载过程分析,Spring Boot 项目的启动类都有一个 @SpringBootApplication 注解,这个注解是一个组合注解,其中的一个组合项就是 @EnableAutoConfiguration

@EnableAutoConfiguration 表示启用 Spring 应用程序上下文的自动配置,该注解会自动导入一个名为 AutoConfigurationImportSelector 的类,而这个类会去读取一个名为 spring.factories 的文件, spring.factories 中则定义需要加载的自动化配置类,
我们打开任意一个框架的 Starter ,都能看到它有一个 spring.factories 文件

标签:return,name,自定义,Spring,Boot,spring,msg,public,String
From: https://www.cnblogs.com/zhaoyuan72/p/16659173.html

相关文章

  • Spring Boot集成Dubbo
    SpringBoot集成Dubbo分布式框架项目结构接口工程:存放实体bean和业务接口服务提供者:业务接口的实现类并将服务暴露且注册到注册中心,调用数据持久层添加依赖(dubbo、注册......
  • 八、Spring Boot 中自定义 SpringMVC 配置
    转发:https://www.javaboy.org/2019/0816/spring-boot-springmvc.html先说结论,使用Java8的,自定义配置使用实现WebMvcConfigurer接口,Java8之前使用WebMvcConfigurerAdapte......
  • 【博学谷学习记录】超强总结,用心分享|狂野架构师SpringCloud-Gateway
    目录SpringCloudGateway的工作流程Gateway动态路由配置中基于Path的路由方式过滤器分类常见默认过滤器添加响应头前缀处理增加前缀自定义过滤器1、实现GatewayFilter接口2......
  • (Spring)文件上传和下载
    文件上传的时候,浏览器将图片以MultipartFile的形式传到服务器,服务器将保存完的图片名响应给浏览器。文件下载的时候,浏览器收到图片名,再向服务器请求图片资源,服务器以流的......
  • SpringBoot-整合Druid
    1.添加jar包<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.8</version></dependency>......
  • 14.Springboot多环境配置2
    1.主配置文件application.ymlspring:profiles:active:@profile.active@#需要在pom文件中指定变量#active:pro#include:mvcgroup:"pro......
  • 【WPF】自定义用户控件 代有字数限制的输入框
    最终效果  用户控件WPF用户控件继承UserControl类,其行为与WPF窗口非常相似:有一个XAML文件和一个代码后置文件。在XAML文件中,您可以添加现有的WPF控件以创建所需的外......
  • Spring Cloud Security OAuth2.0学习
    一、OAuth2授权机制1.1为什么需要OAuth2授权参考OAuth2.0的一个简单解释-阮一峰的网络日志(ruanyifeng.com)1.2OAuth2四种授权方式参考OAuth2.0的四种方式-......
  • Spring事务
    1.事务的四大特性(ACID)●原子性(Atomicity)共生死,要么全部成功,要么全部失败!●一致性(Consistency)事务在执行前后,数据库中数据要保持一致性状态。(如转账的过程账户......
  • Flask 学习-47.Flask-RESTX 自定义响应内容marshal_with
    前言Flask-RESTX提供了一种简单的方法来控制您在响应中实际呈现的数据或期望作为输入有效负载的数据。使用该fields模块,您可以在资源中使用所需的任何对象(ORM模型/自定......