work hard work smart

专注于Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Spring Boot starter介绍以及自定义starter

Posted on 2020-03-08 16:32  work hard work smart  阅读(437)  评论(0编辑  收藏  举报

1、starter介绍

简介: 可插拔插件

与jar包区别: starter能实现自动配置

作用: 大幅提高开发效率

 

2、常用的starter

名称 描述
spring-boot-starter-thymeleaf 使MVC Web applications 支持Thymeleaf
spring-boot-starter-mail 使用Java Mail、Spring email发送支持
spirng-boot-starter-data-redis 通过Spring Data Redis、Jedis client使用Redis键值存储数据库
spirng-boot-starter-web 构建web,包含RESTful风格架构SpringMVC和默认的切入式容器Tomcat
spirng-boot-starter-activermq 为JMS使用Apache ActiveMQ
spirng-boot-starter-data-elasticsearch  使用Elasticsearch、analytics engine、Spring Data Elasticsearch
spirng-boot-starter-aop

通过Spring AOP、AspectJ面向切面编程

spirng-boot-starter-security 使用Spring Security
spirng-boot-starter-data-jpa 通过Hibernate使用Spring Data JPA
spirng-boot-starter Core starter,包括自动配置支、logging and YAML
spirng-boot-starter-freemarker 使MVC Web Applications支持FreeMarker
spirng-boot-starter-batch 使用Spring Batch    
spirng-boot-starter-solr 通过Spring Data Solr使用Apache Solr
spirng-boot-starter-mongodb 使用MongoDB文件存储数据库、Spring Data MongoDB

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3、自定义starter

1、新建工程

 

 

下一步,取名为weacher(天气小工具)

 

创建成功后,增加自动配置

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

  

 

2) 创建WeatherSource 类(属性源)

@ConfigurationProperties(prefix = "weather")
public class WeatherSource {

    private String type;

    private String rate;

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getRate() {
        return rate;
    }

    public void setRate(String rate) {
        this.rate = rate;
    }
}

  

3) 创建WeatherService 服务,供外部调用

public class WeatherService {

    private  WeatherSource weatherSource;

    public WeatherService(WeatherSource weatherSource) {
        this.weatherSource = weatherSource;
    }

    public String getType(){
        return  weatherSource.getType();
    }

    public String getRate(){
        return  weatherSource.getRate();
    }
}

  

4)创建WeatherAutoConfiguration 。

增加注解EnableConfigurationProperties, ConditionalOnProperty。属性weather.enable值为enable才会自动注入

@Configuration
@EnableConfigurationProperties(WeatherSource.class)
@ConditionalOnProperty(name = "weather.enable", havingValue = "enable") //属性weather.enable值为enable才会自动注入
public class WeatherAutoConfiguration {

    @Autowired
    private  WeatherSource weatherSource;


    @Bean
    @ConditionalOnMissingBean(WeatherService.class)
    public WeatherService weatherService(){
        return  new WeatherService(weatherSource);
    }

}

  

ConditionalOnMissingBean注解下方法的作用: 当引用方没有手工定义WeatherService的时候,我们自动注入WeatherService

 

5) spring.factories中添加自动配置类实现

 

 

 

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.example.demo.WeatherAutoConfiguration

  

 

6) 安装Maven helper插件

 

7)将artifactId改成weather-spring-boot-starter

 

 

 生成jar文件

 

 

 

在sb2工程中使用这个starter

1)我们在sb2工程中引入这个jar包

 

 

 

2)sb2增加配置如下

 

 

 

3)增加接口

 

 

 

4) 运行结果如下

 

 

 

5)修改配置文件weather.enable=disable

将出现如下错误。不能找到WeacherService