SpringBoot自定义starter实现

一、新建starter项目


<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0modelVersion>
    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>2.7.6version>
        <relativePath/> 
    parent>
    <groupId>com.examplegroupId>
    <artifactId>demo-starterartifactId>
    <version>0.0.1-SNAPSHOTversion>
    <name>demo-startername>
    <description>Demo project for Spring Bootdescription>

    <properties>
        <java.version>1.8java.version>
    properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-configuration-processorartifactId>
            <optional>trueoptional>
        dependency>

    dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-compiler-pluginartifactId>
                <version>3.8.1version>
                <configuration>
                    <source>1.8source>
                    <target>1.8target>
                    <encoding>UTF-8encoding>
                configuration>
            plugin>
        plugins>
    build>
project>

SpringBoot自定义starter实现_第1张图片

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties("demo")
public class DemoProperties {

    private String namespace;

    private String host = "localhost";

    public String getNamespace() {
        return namespace;
    }

    public void setNamespace(String namespace) {
        this.namespace = namespace;
    }

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }
}

根据自己的业务扩展service即可。

import com.example.config.DemoProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class DemoService {

    @Autowired
    private DemoProperties demoProperties;

    /**
     * 查询配置
     *
     * @return
     */
    public DemoProperties getConfiguration() {
        return demoProperties;
    }
}

SpringBoot自定义starter实现_第2张图片

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  com.example.config.DemoProperties

简单的demo完成后,直接打包

二、项目引用

        <dependency>
            <groupId>com.examplegroupId>
            <artifactId>demo-starterartifactId>
            <version>0.0.1-SNAPSHOTversion>
        dependency>

application.yml

demo:
    host: 192.168.11.121
    namespace: demo

为了测试,我直接在启动类上测试

@SpringBootApplication
public class SpringbootNeo4jApplication implements ApplicationContextAware {

    @Autowired
    private DemoService demoService;

    public static void main(String[] args) {
        SpringApplication.run(SpringbootNeo4jApplication.class, args);
    }

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        DemoProperties configuration = demoService.getConfiguration();
        System.out.println(configuration.getHost());
        System.out.println(configuration.getNamespace());
    }
}

在这里插入图片描述

你可能感兴趣的:(SpringBoot,spring,boot,java,starter)