springboot 的start

建一个父工程

不需要其他目录结构,需要注意的是把type的类型改为POM 这样就没有工程的目录结构 因为父工程不需要

给父工程的pom添加依赖

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>

这样父工程就完成好了

我们仿造mybatis的起步来写

现在需要对外暴露一个工程依赖 myspringboot-start 以刚创建的工程为父工程
子工程为对外暴露的工程 依赖我们的配置类
<dependencies>
<dependency>
<groupId>com.parentdemo</groupId>
<artifactId>mystart-springboot-configruation</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
注意:这个启动工程 如果需要其他的依赖包 统一的放到这个工程中进行管理
这个依赖的包就是我们接下来需要自定义的配置依赖工程 一个普通的springboot工程

工程如图类似就可以了 不需要application.yml文件

定义一个类接收外部的参数:

package com.nicong.demo;

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

@ConfigurationProperties(prefix = "spring.demo")
public class User {
private String name;

public String getName() {
return name;
}

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

@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
'}';
}
}
@ConfigurationProperties(prefix = "spring.demo") 这个注解简单地说一下
就是从上下文中自动的获取到对应字段的属性映射到当前类中去
并且以属性prefix = "spring.demo" 为开头的属性
接下来 创建一个配置类:
package com.nicong.demo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@ConditionalOnProperty(name = "spring.demo.name")
@EnableConfigurationProperties(User.class)
public class HelloConfg {
@Autowired
private User user;
@Bean
public helloController getUser(){

return new helloController(user);
}
}
@Configuration标注为一个配置类会被扫描加载就不多说了
@ConditionalOnProperty(name = "spring.demo.name") 这个就相当于 一个条件判断 容器中存在这样的key就加载 否则就不加载这个配置类,
以@Conditionalxxx的条件判断还有很多这里就不多说了
@EnableConfigurationProperties(User.class)这个可能大家比较陌生的 他的作用说的简单一点就是把带有@ConfigurationProperties注解的类放到springboot容器中
User.class 这个是需要放入的类型 可以写多个 

在来个对外访问的类
package com.nicong.demo;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class helloController {

private User user;

public helloController(User user) {
this.user = user;
}

@GetMapping("/")
public String getHello(){

return user.getName()+"欢迎你!";
}
}
User参数会自动的通过有参数的构造方法注入 因为User已经被放入到容器中了 这里就不多说了
这个类就是一个简单的controller类

接下来最重要的一步

在resources下 建包 META-INF 文件 spring.factories

说白了就是springboot启动的时候需要自动加载的类

以

org.springframework.boot.autoconfigure.EnableAutoConfiguration 为KEY
value就是
com.nicong.demo.HelloConfg 访问的相对路劲的类

接下来就是把工程打包放入到maven中 就不多说了
再然后在其他工程中引用start工程的坐标就可以用了

希望对你们有帮助 有问题可以交流 qq359073594



超简洁,玩转springboot 之springboot自定义start工程的更多相关文章

  1. springboot 2.0 自定义redis自动装配

    首先创建maven项目 pom.xml: <?xml version="1.0" encoding="UTF-8"?> <project xm ...

  2. SpringBoot系列之自定义starter实践教程

    SpringBoot系列之自定义starter实践教程 Springboot是有提供了很多starter的,starter翻译过来可以理解为场景启动器,所谓场景启动器配置了自动配置等等对应业务模块的一 ...

  3. 【SpringBoot】SpringBoot 国际化(七)

    本周介绍SpringBoot项目的国际化是如何处理的,阅读本章前请阅读[SpringBoot]SpringBoot与Thymeleaf模版(六)的相关内容 国际化原理 1.在Spring中有国际化Lo ...

  4. 【SpringBoot】SpringBoot与SpringMVC自动配置(五)

    本文介绍SpringBoot对Spring MVC自动配置,SpringBoot自动配置原理可以参考:[SpringBoot]SpringBoot配置与单元测试(二) 首先新建一个SpringBoot ...

  5. SpringBoot(四) -- SpringBoot与Web开发

    一.发开前准备 1.创建一个SpringBoot应用,引入我们需要的模块 2.SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置,就能运行起来 3.编写业务代码 二.静态资 ...

  6. 【SpringBoot】SpringBoot 入门示例

    参考资料: http://www.tuicool.com/articles/mqeee2A http://www.cnblogs.com/suncj/p/4065589.html http://spr ...

  7. SpringBoot简单打包部署(附工程)

    前言 本文主要介绍SpringBoot的一些打包事项和项目部署以及在其中遇到一些问题的解决方案. SpringBoot打包 在SpringBoot打包这块,我们就用之前的一个web项目来进行打包. 首 ...

  8. springBoot系列-->springBoot注解大全

    一.注解(annotations)列表 @SpringBootApplication:包含了@ComponentScan.@Configuration和@EnableAutoConfiguration ...

  9. [SpringBoot] - 了解什么是SpringBoot,使用SpringBoot的配置文件

    首先明白Spring是什么,Spring是Java开发的一个框架,为了方便简化Java开发. 什么是注解(注解式开发)? Spring的常用注解有哪些? 假如用SpringBoot构建一个网站程序,应 ...

  10. Springboot】Springboot整合邮件服务(HTML/附件/模板-QQ、网易)

    介绍 邮件服务是常用的服务之一,作用很多,对外可以给用户发送活动.营销广告等:对内可以发送系统监控报告与告警. 本文将介绍Springboot如何整合邮件服务,并给出不同邮件服务商的整合配置. 如图所 ...

随机推荐

  1. 刷题-力扣-518. 零钱兑换 II

    518. 零钱兑换 II 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/coin-change-2/ 著作权归领扣网络所有.商业转载 ...

  2. 并发控制--context篇

    目录 1. 前言 2 Context 实现原理 2.1 接口定义 2.1 cancelCtx 2.1.1 Done()接口实现 2.1.2 Err()接口实现 2.1.3 cancel()接口实现 2 ...

  3. k8s 存活探针,滚动更新

    文章原文 存活探针 Kubelet使用liveness probe(存活探针)来确定何时重启容器.例如,当应用程序处于运行状态但无法做进一步操作,liveness探针将捕获到deadlock,重启处于 ...

  4. WebService学习总结(六)--CXF 与Spring结合+tomcat发布

    该项目在上文   WebService学习总结(四)--基于CXF的服务端开发  的基础上修改为spring上发布的webservice接口 1.新建web project 工程 2.导入spring ...

  5. 哦?原来这就是 JVM 垃圾!

    大家都知道,JVM 有垃圾回收的机制,垃圾回收的前提是要知道:什么是垃圾!然后再是如何识别垃圾! 什么是垃圾 垃圾,本质上就是没有引用的对象(们),下面来介绍两种垃圾 1. 没有引用指向的对象 下图是 ...

  6. Typora + PicGo做个人知识库

    最近在做个人知识库,考察了一圈各种平台和工具,发现还是直接用文件系统管理Markdown文件更符合我当前的需求.以Markdown文件作为文字载体,以文件目录作为分类结构,承载以计算机知识为主的学习笔 ...

  7. tk.mybatis中常用方法的使用(最实用)

    一.前言 不知道环境和maven依赖怎么配置的,先看一下这个: SpringBoot整合tk.mybatis 二.方法的介绍和使用 插入方法 int insertSelective(T var1); ...

  8. Spring Boot中使用@Async实现异步调用,加速任务的执行!

    什么是"异步调用"?"异步调用"对应的是"同步调用",同步调用指程序按照定义顺序依次执行,每一行程序都必须等待上一行程序执行完成之后才能执行 ...

  9. Prism+WPF使用DependencyInjection实现AutoMapper的依赖注入功能

    前言 在使用PRISM+WPF开发项目的过程中,需要使用AutoMapper实现对象-对象的映射功能.无奈PRISM没有相关对AutoMapper相关的类库,于是转换一下思想,在nuget 中存在有关 ...

  10. Java 常用 Collection 继承关系与接口实现

    Java Collection List 接口 继承.接口实现关系: public interface List<E> extends Collection<E> 方法定义: ...