前言
相信大家在工作中大家都会去封装一些公用代码,或者工具类
那我们其他项目如果需要这些是不是免不了的就是cv
,好像我们就是cv
来着,哈哈哈哈
我们会发现我们在开发SpringBoot
项目时 我们引入的上面 视频spring-boot-web
这种依赖
其实它内部封装了mvc、和tomcat等
还有就是大家 有没有看过 @SpringBootApplicatio
这个注解
我们会发现 会有一个 @EnableAutoConfiguration
这个注解 ,这个就是我们自动配置的核心
这个是如何使用,如何做到我们的yml配置自动读取而不需要我们手动去配置呢!!
接下来 用实际代码告诉大家
什么是starter?
starter
是SpringBoot
中非常重要的一个机制,他是基于约定优于配置
的思想所衍生出来的,摒弃了以前像Spring
中需要使用一个依赖,需要添加非常多的配置,starter
会在引入依赖时自动扫描需要加载的默认模块及配置,发现我们所定义的Bean
并自动注册到IOC
容器中。
项目结构
具体案例
1,首先我们需要创建一个SpringBoot项目
2,配置我们的pom文件 ,引入我们的核心依赖
<!-- 自动配置 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
<!-- 配置文件处理器,配置文件进行绑定就会有提示 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
3,编写 Configuration、Properties、Bean和service业务
Bean
@Data
@Builder
public class Tg {
private String name;
private String version;
}
Properties
@Data
@ConfigurationProperties(prefix = TgProperties.PREFIX)
public class TgProperties {
public static final String PREFIX = "com.tg";
private String name;
private String version;
}
service
@Service
public abstract class TgService {
public abstract void sayHello();
}
@Service
public class TgServiceImpl extends TgService {
@Resource
private Tg tg;
@Override
public void sayHello() {
String message = "欢迎您呀!,见到你太高兴了!,遇见你是文档幸运";
String[] args = message.split(",");
for (String arg : args) {
System.out.println(arg + "-------" + tg.getName() + "-------" + tg.getVersion() + "\n");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
}
自动配置类
@Configuration
@EnableConfigurationProperties(TgProperties.class)
public class TgAutoConfiguration {
@Bean("tg")
@ConditionalOnMissingBean
public Tg tg(TgProperties tgProperties) {
return Tg.builder()
.name(tgProperties.getName())
.version(tgProperties.getVersion())
.build();
}
@Bean
public TgService tgService() {
return new TgServiceImpl();
}
}
4,开启自动配置
在resources文件下创建META-INF/spring.factories文件
org.springframework.boot.autoconfigure.EnableAutoConfiguration = \
org.example.starter.config.TgAutoConfiguration
5,打包
6,在另外一个SpringBoot项目中使用
引入依赖
<dependency>
<groupId>org.example</groupId>
<artifactId>starter</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
7,配置yml
com.tg.name= Tao Ge Ge
COM.tg.version= 1.0.0
8,创建测试类
public class TestDemo{
@Autowired
private TgService tgService;
// 测试
@Test
public void test() {
tgService.sayHello();
}
}
9,测试效果
结尾
到这里我们的自定义就完成了!!以后是不是再也不用 cv这个哪个工具类了!!
加油!!还在写代码的java程序员们。