发布于2021-05-29 23:01 阅读(607) 评论(0) 点赞(9) 收藏(1)
springboot中starter是一种非常重要的机制,原理是基于SpringBoot自动装配原理。能够免去复杂的配置,将其集成到starter,应用者只需要在maven引入starter依赖(pom.xml),springboot就可以自动扫描到要加载的信息并启动默认配置。springboot会自动通过classthpath路径下的类发现需要的bean并注册到IOC容器。并且springboot已经提供了日常企业开发中各种场景的spring-boot-starter依赖模块。
实现自定义starter(其实就是一个web项目),然后再另一个项目中引入我们自定义的starter并使用。
这里需要说明的是,我们在本地自己测试调用starter的话,在一个工程下可以直接用pom.xml导入自己写的starter依赖。如果我们把starter 发布到远程服务端,就是别人通过 Maven 指定坐标就能从远程引用,不是导入jar包之类的。具体做法可以参考:https://www.cnblogs.com/kangxinxin/p/11881328.html
1、新建maven jar工程,zdy-spring-boot-starter,导入依赖
- <?xml version="1.0" encoding="UTF-8"?>
- <project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <groupId>org.lagou</groupId>
- <artifactId>zdy-spring-boot-starter</artifactId>
- <version>1.0-SNAPSHOT</version>
-
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-autoconfigure</artifactId>
- <version>2.5.0</version>
- </dependency>
-
- </dependencies>
-
- </project>
2、编写javaBean
- package com.lagou.pojo;
- //通用的bean对象
-
- /*
- @ConfigurationProperties:自动注入的注解,把properties配置文件转化为bean来使用的。
- @EnableConfigurationProperties:使@ConfigurationProperties注解生效
- 如果只配置@ConfigurationProperties注解,在IOC容器中是获取不到properties配置文件转化的bean的
- */
-
-
- @EnableConfigurationProperties(SimpleBean.class)
- @ConfigurationProperties(prefix = "simplebean")
- public class SimpleBean {
-
- private int id;
- private String name;
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
- }
3、自动配置类,主要作用就是执行@Bean标记的方法。
- package com.lagou.config;
-
- //自动配置类,把simpleBean生成实例对象存到容器中
- //@Configuration注解标识的类中声明了1个或者多个@Bean方法,Spring容器可以使用这些方法来注入Bean
- @Configuration
- public class MyAutoConfiguration {
-
- static {
- System.out.println("MyAutoConfiguration init...");
- }
-
- @Bean
- public SimpleBean simpleBean(){
- return new SimpleBean();
- }
- }
4、在resource下创建/META-INF/spring.factories,然后配置自己的自动配置类(key value形式,key是固定的EnableAutoConfiguration)。意思是SpringBoot启动的时候会去加载我们的SimpleBean到IOC容器,这其实是一种变形的SPI机制。
- org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
- com.lagou.config.MyAutoConfiguration
5、新建一个springboot模块,在测试类中测试调用simplebean
在application.properties中给simplebean对象赋值,用于测试
result:
6、这里虽然有了测试结果,但我们查看springboot自动配置类相关源码时会发现都会加上@ConditionalMissingBean的注解,而我们这个自动配置类实际上是没有加的。不加的话springboot启动以后就会默认加载自动配置类的bean,假如我们不需要呢?这时除非我们手动去pom.xml把starter注释掉(做法很low)。
原文链接:https://blog.csdn.net/ChaoticNg/article/details/117331378
作者:黑暗之神
链接:http://www.javaheidong.com/blog/article/207840/0120bb4a54340712a857/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!