zoukankan      html  css  js  c++  java
  • Spring Boot starter介绍以及自定义starter

    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

  • 相关阅读:
    highcharts参数详解
    文件上传与下载的前后端处理
    jQuery中,$.extend,$obj.extend和$.fn.extend三者的区别
    JS二维数据处理逻辑封装探究
    HTML5-WebSocket-初探
    关于CKEditor.NET的安全性错误
    SpringMVC源码从入门到放弃-DispatcherServlet
    Spring源码从入门到放弃-Controller注册
    一、dubbo源码从入门到放弃-SPI
    新人伤不起
  • 原文地址:https://www.cnblogs.com/linlf03/p/12442717.html
Copyright © 2011-2022 走看看