欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

精通Spring Boot——第五篇:写一个spring-boot-starter包

程序员文章站 2022-07-05 09:07:23
...

为了能更好的理解Springboot的自动配置和工作原理,我们今天来手写一个spring-boot-hello-starter。这个过程很简单,代码不多。接下来我们看看怎么开始实践。 ##1. 新建maven工程。 这块就不演示了,如果不会可以自行百度...啦啦啦,因为太简单了啊

2.新建一个properties类

/**
 * @author Lee
 * @// TODO 2018/7/25-9:21
 * @description
 */
@ConfigurationProperties(prefix = "customer")
public class CustomerProperties {
    private static final String DEFAULT_NAME = "Lensen";

    private String name = DEFAULT_NAME;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

2.创建一个服务类CustomerService

/**
 * @author Lee
 * @// TODO 2018/7/25-10:30
 * @description
 */
public class CustomerService {
    private String name;

    public String findCustomer(){
        return "The Customer is " + name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

3.AutoConfiguration类

/**
 * @author Lee
 * @// TODO 2018/7/25-10:32
 * @description
 */
@Configuration
@EnableConfigurationProperties(CustomerProperties.class)
@ConditionalOnClass(CustomerService.class)
@ConditionalOnProperty(prefix = "customer", value = "enabled", matchIfMissing = true)
public class CustomerAutoConfiguration {

    @Autowired
    private CustomerProperties customerProperties;

    @Bean
    @ConditionalOnMissingBean(CustomerService.class)
    public CustomerService customerService() {
        CustomerService customerService = new CustomerService();
        customerService.setName(customerProperties.getName());
        return customerService;
    }
}

##4. spring.factories配置

在src/main/resources新建文件夹META-INF,然后新建一个spring.factories文件


org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  com.developlee.configurer.CustomerAutoConfiguration

pom文件修改artifactId为spring-boot-hello-starter 打包成jar. 然后用mvn install 安装到本地mvn仓库。 ##5. 测试spring-boot-hello-start 新建springboot工程,在pom.xml文件引入安装的jar包

	<dependency>
		<groupId>com.developlee</groupId>
		<artifactId>spring-boot-hello-starter</artifactId>
		<version>1.0-SNAPSHOT</version>
	</dependency>

在项目启动类中直接做测试:

@SpringBootApplication
@RestController
public class TestStarterApplication {

	@Autowired
	CustomerService customerService;

	@GetMapping("/")
	public String index(){
		return customerService.getName();
	}

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

application.properties文件配置下我们的customer.name

customer.name = BigBBrother

接下来启动项目,请求地址localhost:8080, 即可看到页面上显示BigBBrother

到这我们已经完成了一个spring-boot-starter jar包的开发,有很多功能我们可以自己封装成一个jar,以后要用直接引用就行了~ 这样写代码是不是会有不一样的体验呢? 源代码在我的github可以找到哦

转载于:https://my.oschina.net/liululee/blog/2222989