编写自己的starter

标签: starter
18人阅读 评论(0) 收藏 举报
分类:

0 概述

spring boot中的starter概念是非常重要的机制,将一些配置和基础服务集成到starter,使用者只需要引入starter 依赖即可,spring boot 根据starter配置文件spring.factories自动扫描到要加载的信息​。

1 什么starter

官网:Starters are a set of convenient dependency descriptors that you can include in your application。The starter is really an empty jar. Its only purpose is to provide the necessary dependencies to work with the library。简单的说一个starter 集成了一些功能(比如pom依赖、提供一些基础的bean服务等),使用者只需要直接引入相应的starter 即可,不需要引入一些pom依赖以及一些配置文件等,极大地简化了使用。

2 实践

spring boot 怎么能知道这个starter 需要干些什么呢,所以需要引入spring.factories​文件,我们在工程的resource目录下新建META-INF目录,在里面新建一个配置文件spring.factories​,具体内容如下。

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.alibaba.rt.HelloAutoConfiguration

这里写图片描述


import com.hsc.service.impl.HelloServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableConfigurationProperties(HelloProperties.class)
public class HelloAutoConfiguration {

    @Autowired
    private HelloProperties helloProperties;

    @Bean
    public HelloService helloService() {
        HelloServiceImpl helloService = new HelloServiceImpl();
        helloService.setName(helloProperties.getName());
        return helloService;
    }

}

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

/**
 * @author hsc
 * 配置属性
 */
@ConfigurationProperties(prefix = HelloProperties.PREFIX)
public class HelloProperties {
    public final static String PREFIX = "spring.hello";

    private String name;

    private String version;

    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }

    public String getName() {
        return name;
    }

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

}
查看评论

spring boot Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration

java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @Context...
  • g960806
  • g960806
  • 2017-11-04 15:13:24
  • 3072

spring boot Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @Spr

java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @Context...
  • leigh_
  • leigh_
  • 2017-04-06 18:58:53
  • 12556

SpringBoot Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration

如异常所译,你需要在注解上加上@SpringBootTest(classes = Application.class)或者使用@RunWith(SpringJUnit4ClassRunner.clas...
  • csdn_am
  • csdn_am
  • 2018-03-30 14:27:49
  • 290

Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(

application.class要放在根目录下,否则会发生以下错误Unable to find a @SpringBootConfiguration, you need to use @Contex...
  • rhb99999
  • rhb99999
  • 2017-06-21 17:00:04
  • 4034

SpringBoot中级教程之SpringBoot自定义配置(十一)

SpringBoot中级教程之SpringBoot自定义配置(十一)前言首先力推下我的开源项目http://git.oschina.net/wangkang_daydayup/swagger-doc ...
  • veZunShao
  • veZunShao
  • 2017-07-18 16:14:43
  • 4808

SpringBoot笔记一

1 开始 1.1 spring介绍 Spring Boot使开发独立的,产品级别的基于Spring的应用变得非常简单,你只需"just run"。 我们为Spring平台及第三方库提供开箱即用的设...
  • jsyxcjw
  • jsyxcjw
  • 2015-07-05 15:54:45
  • 128974

spring boot 启动原理

https://www.cnblogs.com/shamo89/p/8184960.html springboot之启动原理解析 ...
  • u014071434
  • u014071434
  • 2018-04-09 14:50:40
  • 36

Spring boot 启动报错 Failed to auto-configure a DataSource

今天Spring Boot 2.0正式版发布,寻思着搭个小demo尝试一下Spring Boot的新特性,使用idea创建项目。在选择组件时添加了mysql、mybatis 然后在第一次启动的时候启动...
  • gelusheng123456
  • gelusheng123456
  • 2018-03-25 10:44:01
  • 371

Spring Boot单元测试

Spring 框架提供了一个专门的测试模块(spring-test),用于应用程序的集成测试。 在 Spring Boot 中,你可以通过spring-boot-starter-test启动器快速开启...
  • u012501054
  • u012501054
  • 2018-04-03 10:09:04
  • 60

Spring boot+Spring Security 4配置整合实例

本例所覆盖的内容: 1. 使用Spring Security管理用户身份认证、登录退出 2. 用户密码加密及验证 3. 采用数据库的方式实现Spring Security的remember-me功能 ...
  • code__code
  • code__code
  • 2016-12-26 13:47:07
  • 51760
    个人资料
    持之以恒
    等级:
    访问量: 32万+
    积分: 5101
    排名: 6827
    最新评论