• 【串线篇】spring boot自定义starter


    starter:

    一、这个场景需要使用到的依赖是什么?

    二、如何编写自动配置

    启动器只用来做依赖导入;(启动器模块是一个空 JAR 文件,仅提供辅助性依赖管理,这些依赖可能用于自动装配或者其他类库)

    专门来写一个自动配置模块;

    启动器依赖自动配置;别人只需要引入启动器(starter)

    我们一般的的经验

    @Configuration    //指定这个类是一个配置类 @ConditionalOnXXX    //在指定条件成立的情况下自动配置类生效 @AutoConfigureAfter    //指定自动配置类的顺序

    @Bean //给容器中添加组件

    @ConfigurationPropertie(prefix=””)结合相关xxxProperties类来绑 定相关的配置

    @EnableConfigurationProperties  //让xxxProperties生效加入到容器中

    自动配置类要能加载

    将需要启动就加载的自动配置类,配置在META‐INF/spring.factories下(即要把绿色要配置在里面)

    org.springframework.boot.autoconfigure.EnableAutoConfiguration= org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,

    org.springframework.boot.autoconfigure.aop.AopAutoConfiguration,

    三、模式

    1.启动器只是用来做依赖导入;启动器模块是一个空 JAR 文件,仅提供辅助性依赖管理,这些依赖可能用于自动 装配或者其他类库;比如

    2. 启动器依赖自动配置;别人只需要引入启动器(starter)

    所以我们要 专门来写一个自动配置模块autocongigurer;

    3.推荐命名规则

    四、步骤:

    1)、启动器模块

    <?xml  version="1.0"  encoding="UTF‐8"?>
    <project  xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema‐instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
    http://maven.apache.org/xsd/maven‐4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    
    <groupId>com.atguigu.starter</groupId>
    <artifactId>atguigu‐spring‐boot‐starter</artifactId>
    <version>1.0‐SNAPSHOT</version>
    
    <!‐‐启动器‐‐>
    <dependencies>
    
    <!‐‐引入自动配置模块‐‐>
    <dependency>
    <groupId>com.atguigu.starter</groupId>
    <artifactId>atguigu‐spring‐boot‐starter‐autoconfigurer</artifactId>
    <version>0.0.1‐SNAPSHOT</version>
    </dependency>
    </dependencies>
    
    </project>

    2)、自动配置模块

     <?xml  version="1.0"  encoding="UTF‐8"?>
        <project  xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema‐instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0  http://maven.apache.org/xsd/maven‐ 4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion> 5
        <groupId>com.atguigu.starter</groupId>
        <artifactId>atguigu‐spring‐boot‐starter‐autoconfigurer</artifactId>
        <version>0.0.1‐SNAPSHOT</version>
        <packaging>jar</packaging> 
        <name>atguigu‐spring‐boot‐starter‐autoconfigurer</name>
        <description>Demo  project  for  Spring  Boot</description> 
        <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring‐boot‐starter‐parent</artifactId>
        <version>1.5.10.RELEASE</version>
        <relativePath/>  <!‐‐  lookup  parent  from  repository  ‐‐>
        </parent> 
        <properties>
        <project.build.sourceEncoding>UTF‐8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF‐8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        </properties> 
        <dependencies> 
        <!‐‐引入spring‐boot‐starter;所有starter的基本配置‐‐>
        <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring‐boot‐starter</artifactId>
        </dependency> 
        </dependencies> 
    
    
        </project> 
    package  com.atguigu.starter;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    @ConfigurationProperties(prefix  =  "atguigu.hello")
    public  class  HelloProperties  
    private String prefix;
    private String suffix;
    
    public String getPrefix() { return prefix;
    }
    
    public void setPrefix(String prefix) { this.prefix = prefix;
    }
    
    public String getSuffix() { return suffix;
    }
    
    public void setSuffix(String suffix) { this.suffix = suffix;
    }
    }
    package  com.atguigu.starter; public  class  HelloService  {
    HelloProperties  helloProperties;
    
    public  HelloProperties  getHelloProperties()  { return helloProperties;
    }
    
    public  void  setHelloProperties(HelloProperties  helloProperties)  {
    this.helloProperties = helloProperties;
    }
    
    public  String  sayHellAtguigu(String  name){
    return helloProperties.getPrefix()+"‐" +name + helloProperties.getSuffix();
    }
    
    
    }
    package  com.atguigu.starter;
    import  org.springframework.beans.factory.annotation.Autowired;
    import  org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import  org.springframework.boot.context.properties.EnableConfigurationProperties; import  org.springframework.context.annotation.Bean;
    import  org.springframework.context.annotation.Configuration;
    @Configuration
    @ConditionalOnWebApplication  //web应用才生效
    @EnableConfigurationProperties(HelloProperties.class)
    public  class  HelloServiceAutoConfiguration  {
    
    @Autowired
    HelloProperties  helloProperties; @Bean
    public  HelloService  helloService(){ HelloService  service  =  new  HelloService();
    service.setHelloProperties(helloProperties); return service;
    }
    }
  • 相关阅读:
    搜狗拼音输入法候选框有时会跑到屏幕的左上角
    力扣 94. 二叉树的中序遍历
    让我们了解 Ceph 分布式存储
    HDFS的架构和设计要点
    业级PPTP服务器搭建企
    FastCGI中fastcgi_param 详细说明
    LAMP两种模式
    CentOS 7.4搭建LAMP,LAMP:Linux、Apache、MySQL、PHP
    centos7 7.3php编译安装
    Linux下编译安装MariaDB
  • 原文地址:https://www.cnblogs.com/yanl55555/p/12092531.html
Copyright © 2020-2023  润新知