Springboot从零开始自定义启动器附源码

最近再学Springboot最后写一个自定义启动器来结束Springboot的基础的学习。

      首先创建一个空的工程:

     

   用maven工程,new一个module。 

设置好文件夹。

接下来再创建一个模块:

       

创建好之后可知在启动器starter中:

pom文件:

<!--启动器-->
    <dependencies>
        <!--引入自动配置模块-->
        <dependency>
            <groupId>com.atguigu.starter</groupId>
            <artifactId>atguigu-spring-boot-starter-autoconfigurer</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>

引入自动配置模块。

接下来在自动配置模块中设计:

创建类。

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.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;

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;
    }
}

在类路径下写一个文件夹:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.atguigu.starter.HelloServiceAutoConfiguration

到此自动配置写完:

将两个模块安装到maven仓库中。

装到仓库里面不在一个项目中的时候就可以用坐标引入了。

接下来测试:

创建工程之后再pom文件引入自定义的starter

<!-- 引入自定义的starter-->
        <dependency>
            <groupId>com.atguigu.starter</groupId>
            <artifactId>atguigu-spring-boot-starter</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

自己写个测试controller:

package com.atguigu.springboot.controller;

import com.atguigu.starter.HelloService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @Autowired
    HelloService helloService;

    @GetMapping("hello")
    public String Hello(){
        return helloService.sayHellAtguigu("haha");
    }
}

配置文件:

atguigu.hello.prefix=ATGUIGU
atguigu.hello.suffix=HELLO WORD

成功:

代码github地址:自定义的starter:https://github.com/FandyWw/spring-boot-08-starter

                            测试:https://github.com/FandyWw/spring-boot-08-starter-test

猜你喜欢

转载自blog.csdn.net/qq_28764557/article/details/89005008
今日推荐