Start 组件开发,核心是自动注解类的注解顺序,即根据条件进行注解。

首先我们来理解@Configuration、@Value、@Bean注解

以DataSourceAutoConfiguration类注解为例,
@Configuration表名此类是个配置类;
@ConditionalOnClass表明当DataSource.class, EmbeddedDatabaseType.class存在时才会继续进行下面的配置;@EnableConfigurationProperties从IOC容器中获取application.properties配置文件的Bean;
@Import 导入相关类。

@ConfigurationProperties注解主要用来把properties配置文件转化为bean来使用的,而@EnableConfigurationProperties注解的作用是@ConfigurationProperties注解生效。如果只配置@ConfigurationProperties注解,在IOC容器中是获取不到properties配置文件转化的bean的。
@EnableConfigurationProperties详细说明

自动加载核心注解说明

有了以上的了解后,来创建 Maven 项目, 目录结构如下:

添加pom.xml依赖(根据组件功能添加)

    <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId><version>2.0.0.RELEASE</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><version>2.0.0.RELEASE</version><optional>true</optional></dependency></dependencies>

在使用Spring官方的Starter时通常可以在application.properties中来配置参数覆盖掉默认的值。即sex的值会被配置文件中的值替换掉。
PersonProperties 类

@ConfigurationProperties(prefix = "spring.person")
public class PersonProperties {// 姓名private String name;// 年龄private int age;// 性别private String sex = "M";// Getter & Setter}

PersonService类

public class PersonService {private PersonProperties properties;public PersonService() {}public PersonService(PersonProperties properties) {this.properties = properties;}public void sayHello(){System.out.println("大家好,我叫: " + properties.getName() + ", 今年" + properties.getAge() + "岁"+ ", 性别: " + properties.getSex());}
}

PersonServiceAutoConfiguration 类

@Configuration
@EnableConfigurationProperties(PersonProperties.class)
@ConditionalOnClass(PersonService.class)
@ConditionalOnProperty(prefix = "spring.person", value = "enabled", matchIfMissing = true)
public class PersonServiceAutoConfiguration {@Autowiredprivate PersonProperties properties;@Bean@ConditionalOnMissingBean(PersonService.class)  // 当容器中没有指定Bean的情况下,自动配置PersonService类public PersonService personService(){PersonService personService = new PersonService(properties);return personService;}
}

spring.factories文件
注意:META-INF是自己手动创建的目录,spring.factories也是手动创建的文件,在该文件中配置自己的自动配置类

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.cnbi.PersonServiceAutoConfiguration

最后将项目打包 mvn clean install

在另一个项目中添加依赖 如何在项目中添加本地jar包

     <dependency><groupId>cnbi</groupId><artifactId>helloworld-spring-boot-starter</artifactId><version>1.0</version></dependency>

配置application.properties

spring.person.age=23
spring.person.name=ss
spring.person.sex=F

启动测试类

@RunWith(SpringRunner.class)
@SpringBootTest
public class LarkApplicationTests {@Autowired@SuppressWarnings("ALL")private PersonService personService;@Testpublic void testHelloWorld() {personService.sayHello();}}

2019-09-11 09:25:19.453 INFO 7272 — [ main] com.tiamo.lark.LarkApplicationTests : Started LarkApplicationTests in 4.893 seconds (JVM running for 6.7)

大家好,我叫: ss, 今年23岁, 性别: F

Spring Boot自定义Start组件开发相关推荐

  1. Spring boot(web 组件,ORM 操作 MySQL,接口架构风格—RESTful,集成 Redis,集成 Dubbo,打包)

    文章目录 1.3 第三章 Spring Boot 和 web 组件 1.3.1 SpringBoot 中拦截器 1.3.2 Spring Boot 中使用 Servlet 1.3.3 Spring B ...

  2. 《Spring Boot+Vue全栈开发实战》读书笔记

    写在前面 嗯,回家处理一些事,所以离职了,之前的公司用开源技术封装了一套自己的低代码平台,所以之前学的spring Boot之类的东西都忘了很多,蹭回家的闲暇时间复习下. 笔记整体以 Spring B ...

  3. 读书笔记《Spring Boot+Vue全栈开发实战》(下)

    本书将带你全面了解Spring Boot基础与实践,带领读者一步步进入 Spring Boot 的世界. 前言 第九章 Spring Boot缓存 第十章 Spring Boot安全管理 第十一章 S ...

  4. Spring Boot(19)---开发Web应用之Thymeleaf篇

    Spring Boot(19)---开发Web应用之Thymeleaf篇 前言 Web开发是我们平时开发中至关重要的,这里就来介绍一下Spring Boot对Web开发的支持. 正文 Spring B ...

  5. 《Vue+Spring Boot前后端分离开发实战》专著累计发行上万册

                杰哥的学术专著<Vue+Spring Boot前后端分离开发实战>由清华大学出版社于2021年3月首次出版发行,虽受疫情影响但热度不减,受到业界读者的热捧,截至今日 ...

  6. Spring Boot 专栏全栈开发实战

    2020 年 11 月 12 日,Spring 官方发布了 Spring Boot 2.4.0 GA 的公告,链接为 Spring Boot 2.4.0 available now.为了让大家能够学习 ...

  7. Spring Boot自定义横幅生成

    每当我们启动Spring Boot应用程序时,都会显示如下所示的文本消息. 这称为横幅. 现在,如果我们可以创建一个特定于我们的Spring Boot应用程序的自定义横幅并使用它代替默认的Spring ...

  8. Spring Boot(20)---开发Web应用之JSP篇

    Spring Boot(20)---开发Web应用之JSP篇 前言 上一篇介绍了Spring Boot中使用Thymeleaf模板引擎,今天来介绍一下如何使用SpringBoot官方不推荐的jsp,虽 ...

  9. Spring Boot自定义Banner

    Spring Boot自定义Banner https://www.jianshu.com/p/a53f324c92f2 我们在启动 SpringBoot 时,控制台会打印 SpringBoot Log ...

最新文章

  1. centos7下安装gcc7
  2. linux diff命令_Linux diff命令示例
  3. LeetCode上读不懂题!看不懂测试用例的那些题(有生之年更新。。。)
  4. mcu比较器技巧和诀窍_如何准备技术面试-技巧和窍门,以帮助您表现最好
  5. android textview密文,TextView 明密文处理
  6. 【OGG】 RAC环境下管理OGG的高可用 (五)
  7. idea 查询项目代码行数_程序员的福利,四个技巧,让OneNote支持代码高亮
  8. python在数据分析方面的应用、下列说法正确_智慧树知到大数据分析的python基础答案...
  9. 微电子专业深度盘点:哪所大学芯片最强?强在哪?(第3弹)
  10. Linux 安装 VMware Player
  11. Eclipse svn 提交代码步骤笔记
  12. unity c# 触摸屏物体识别桌算法
  13. 彻底删除win10易升
  14. re 中 报错 no such group
  15. 受贿千万,字节前餐饮主管二审被判6年
  16. 基于php+mysql的网上购物商城系统
  17. 计算机考试彩虹云朵,抖音王源彩虹云朵歌曲歌词完整版
  18. MySql 存储boolean的数据
  19. Android-PickerView系列之封装篇(三)
  20. 什么是服务治理?为什么需要服务治理?

热门文章

  1. Python爬虫百度新闻标题
  2. 应用matlab仿真几类混沌电路,典型混沌电路及分析.ppt
  3. Cent OS 8安装Docker
  4. 有什么数据恢复软件好?
  5. 会声会影2022试用版 智能、快速、简单的视频剪辑软件
  6. [3,3‘-联吡啶]-6,6‘-二甲醛 cas1264748-06-2 中间体材料
  7. 写一个程序来确定到底谁是凶手
  8. 上月最新面过美团大众点评拿到offer的最新面经来了(技术三面+HR)
  9. python100day day22 -Requests
  10. 自由职业的 6 条建议