摘要
实际开发中基本没有人会直接ssm自己配置,可能也就像我这种憨憨,在学校里自己做东西还在自己写配置。
用了SpringBoot,发现是真的好用。让开发只关注逻辑实现即可了。
话说回来,我每次用到SpringBoot,经常会想,如果项目不用Spring,SpringBoot的作用又在哪里呢?
正文
一、简介 1.1 spring优缺点 优点
提供了依赖注入 面向切面编程 可选注解或者xml 缺点
spring组件是轻量级的,但是配置却是重量级的。也就是少写了代码,多写了配置 依赖管理也费事费力,如版本问题。 1.2 springboot概述 springboot对spring的优缺点进行了改善和优化。基于约定优于配置 的思想,让开发人员可以只关心逻辑实现,而不用再去为配置耗时。从而提高了开发效率,缩减项目周期。
springboot的特点
为基于spring开发提供更快的入门体验 开箱即用,没有代码生成,也无需xml配置 提供大型项目中常见的非功能特性,如嵌入式服务器(springboot本身内置了tomcat服务器,不需要在打包放到tomcat里面跑)、安全、指标、健康检测(我现在工作就用了健康检测)等 springboot只是提供了快速使用spring的方式 1.3 springboot核心功能 核心功能
起步依赖本质上就是一个Maven项目对象模型(Project Object Model,POM),定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。简单说,起步依赖就是将具备某种功能的坐标打包到一起,并提供一些默认功能 自动配置 二、入门 2.1 快速入门 步骤
创建Maven工程,普通的java工程即可 添加springboot的起步依赖 添加springboot的引导类 创建控制器 就普通的maven工程即可
展开
SpringBoot要求,项目要继承SpringBoot的起步依赖,spring-boot-starter-parent
1
2
3
4
5
6
<parent>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-starter-parent</artifactId>
<version> 2.4.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
SpringBoot要集成SpringMVC进行Controller开发,所以项目要导入web的启动依赖
1
2
3
4
5
6
<dependencies>
<dependency>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
总配置文件如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?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>
<parent>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-starter-parent</artifactId>
<version> 2.4.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId> top.meethigher</groupId>
<artifactId> SpringBoot</artifactId>
<version> 1.0</version>
<dependencies>
<dependency>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-starter-test</artifactId>
<scope> test</scope>
</dependency>
</dependencies>
</project>
添加控制器如下
1
2
3
4
5
6
7
8
@Controller
public class QuickController {
@RequestMapping ( "/quick" )
@ResponseBody
public String quick (){
return "Hello Spring Boot" ;
}
}
@Controller和@ResponseBody可以通过@RestController来替换。添加了@RestController就可以不用再写那两个了。
添加引导类
1
2
3
4
5
6
7
@SpringBootApplication //声明该类是springboot的引导类
public class Start01 {
public static void main ( String [] args ) {
//run方法,表示运行springboot的引导类,run参数就是springboot引导类的字节码对象
SpringApplication . run ( Start01 . class );
}
}
访问localhost:8080/quick即可。
2.2 springboot的热部署 首先pom中导入热部署依赖
1
2
3
4
5
<!--热部署-->
<dependency>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-devtools</artifactId>
</dependency>
其次,idea开启自动编译功能
第一步,设置里面开启自动编译
展开
第二部,ctrl+shift+alt+/找到Registry
展开
2.3 借助idea快速创建springboot工程 用spring初始化这个工具
展开
在下面可以选择自己的依赖,比如热部署的、web开发的。
展开
三、原理 3.1 起步依赖 pom选中要看的依赖,ctrl左键就能看到相应的pom,如果没反应的话,尝试重启idea,或者去maven仓库看一下,到底有没有下载下来
展开
像spring-boot-starter-parent,我们可看他里面的指定配置文件名称等的内容,还可以继续看他的父级spring-boot-dependencies,然后就能看到springboot内置的一些依赖。
展开
这样就算是统一了,不用担心自己导依赖的时候,有版本问题
3.2 自动配置 @SpringBootApplication注解的作用,相当于以下三个
@SpringBootConfiguration:查看源码,可以知道相当于@Configuration,指定当前类是个配置类 @ComponentScan:扫描包 @EnableAutoConfiguration:是否自动配置的开关。源码里面有@Import用于引入其他配置类 通过@EnableAutoConfiguration
展开
我们就可以找到许多自动配置,里面配置了许多默认属性。
展开
如果我们想要更改默认配置,只需要在springboot的配置文件中,添加server.port属性即可。
如果是用的mybatis启动器,那么也可以这么找来配置。
找到mybatis的autoconfigure,然后找到配置json,搜索指定关键字就能找到了。
比如
1
2
server.port = 444
server.servlet.context-path = /demo
或者
1
2
3
4
server :
port : 8080
servlet :
context-path : /demo
四、配置 springboot的配置文件有两种,properties和yml(yaml),下面使用yml来演示
4.1 yml配置文件 yml文件格式是YAML(YAML Aint Markup Language)编写的文件格式,类似于json的格式。
扩展名可以为.yml或者.yaml
配置普通数据 语法
注意
value之前要带空格
配置对象数据 语法
1
2
3
key :
key1 : value1
key2 : value2
或者
1
key : {key1: value1,key2 : value2}
配置集合数据 如果集合中存的是普通数据
1
2
3
4
city :
- taian
- changchun
- wuhan
或者
1
city : [ taian,changchun,wuhan]
如果集合中存的是对象数据
1
2
3
4
5
6
7
8
9
10
student :
- name : ccc
age : 18
addr : taian
- name : ccc
age : 19
addr : changchun
- name : ccc
age : 24
addr : wuhan
或者
1
student : [ {name:ccc,age:18,addr:taian},{name:ccc,age:19,addr:changchun},{name:ccc,age:24,addr:wuhan}]
相当于存的三个数据,都是一个对象
4.2 获取配置文件内容 两种方式
@Value:适合直接取值 @ConfigurationProperties:适合多个属性的一起取 配置文件
1
2
3
4
5
6
7
8
9
server :
port : 8080
servlet :
context-path : /demo
name : ccc
person :
name : ccc
age : 14
addr : wuhan
@Value的示例
1
2
3
4
5
6
7
8
9
10
11
12
@RestController
public class Quick2Controller {
@Value ( "${name}" )
private String name ;
@Value ( "${person.addr}" )
private String addr ;
@RequestMapping ( "/quick2" )
public String quick2 (){
//获取配置文件信息
return addr ;
}
}
@ConfigurationProperties的示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
@RestController
@ConfigurationProperties ( prefix = "person" )
public class Quick3Controller {
private String name ;
private String addr ;
private Integer age ;
public String getName () {
return name ;
}
public void setName ( String name ) {
this . name = name ;
}
public String getAddr () {
return addr ;
}
public void setAddr ( String addr ) {
this . addr = addr ;
}
public Integer getAge () {
return age ;
}
public void setAge ( Integer age ) {
this . age = age ;
}
@RequestMapping ( "/quick3" )
public String quick2 (){
//获取配置文件信息
return getName () + getAddr () + getAge ();
}
}
pom中添加@ConfigurationProperties自动提示执行器的依赖
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?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>
<parent>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-starter-parent</artifactId>
<version> 2.4.5</version>
</parent>
<groupId> top.meethigher</groupId>
<artifactId> SpringBoot</artifactId>
<version> 1.0</version>
<dependencies>
<!--集成springmvc的web依赖-->
<dependency>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-starter-web</artifactId>
</dependency>
<!--热部署-->
<dependency>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-devtools</artifactId>
</dependency>
<!--@ConfigurationProperties的执行器配置,
方便在配置了@ConfigurationProperties之后,
在boot的配置文件中自动提示-->
<dependency>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-configuration-processor</artifactId>
<optional> true</optional>
</dependency>
</dependencies>
</project>
五、整合 5.1 springboot整合mybatis 步骤
添加mybatis的起步依赖 添加数据库驱动坐标 添加数据库连接信息 创建表 创建bean 编写Mapper 配置Mapper映射文件 在application.yml添加mybatis 添加控制器 pom如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd" >
<modelVersion> 4.0.0</modelVersion>
<parent>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-starter-parent</artifactId>
<version> 2.4.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId> top.meethigher</groupId>
<artifactId> springboot_mybaits</artifactId>
<version> 0.0.1-SNAPSHOT</version>
<name> springboot_mybaits</name>
<description> Demo project for Spring Boot</description>
<properties>
<java.version> 11</java.version>
</properties>
<dependencies>
<dependency>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-starter-web</artifactId>
</dependency>
<!--mybatis起步依赖-->
<dependency>
<groupId> org.mybatis.spring.boot</groupId>
<artifactId> mybatis-spring-boot-starter</artifactId>
<version> 2.1.4</version>
</dependency>
<dependency>
<groupId> mysql</groupId>
<artifactId> mysql-connector-java</artifactId>
<scope> runtime</scope>
</dependency>
<!--junit单元测试启动器-->
<dependency>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-starter-test</artifactId>
<scope> test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
springboot配置
1
2
3
4
5
6
7
8
9
10
#数据库
spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver
spring.datasource.username = root
spring.datasource.password = root
spring.datasource.url = jdbc:mysql://localhost:3306/springboot?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
#配置mybatis信息
#pojo别名扫描包
mybatis.type-aliases-package = top.meethigher.springboot_mybaits.domain
#映射扫描包
mybatis.mapper-locations = classpath:mapper/*Mapper.xml
实体类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public class Account {
private Integer id ;
private String name ;
private Float money ;
public Integer getId () {
return id ;
}
public void setId ( Integer id ) {
this . id = id ;
}
public String getName () {
return name ;
}
public void setName ( String name ) {
this . name = name ;
}
public Float getMoney () {
return money ;
}
public void setMoney ( Float money ) {
this . money = money ;
}
@Override
public String toString () {
return "Account{" +
"id=" + id +
", name='" + name + '\'' +
", money=" + money +
'}' ;
}
}
Mapper
1
2
3
4
@Mapper
public interface AccountMapper {
List < Account > findAll ();
}
控制器
1
2
3
4
5
6
7
8
9
10
@RestController
public class AccountController {
@Autowired
private AccountMapper accountMapper ;
@RequestMapping ( "/findAll" )
public List < Account > findAll (){
List < Account > all = accountMapper . findAll ();
return all ;
}
}
5.2 springboot整合junit 导入junit的起步依赖。因为springboot2.4.5使用的是junit5.7.1,所以跟4有点不同。
测试类这么写
1
2
3
4
5
6
7
8
9
10
11
@SpringBootTest
public class MybatisTest {
@Autowired
private AccountMapper accountMapper ;
@Test
void testFindAll () {
System . out . println ( accountMapper . findAll ());
}
}
5.3 springboot整合jpa pom
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd" >
<modelVersion> 4.0.0</modelVersion>
<parent>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-starter-parent</artifactId>
<version> 2.4.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId> top.meethigher</groupId>
<artifactId> springboot_jpa</artifactId>
<version> 0.0.1-SNAPSHOT</version>
<name> springboot_jpa</name>
<description> Demo project for Spring Boot</description>
<properties>
<java.version> 11</java.version>
</properties>
<dependencies>
<dependency>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId> mysql</groupId>
<artifactId> mysql-connector-java</artifactId>
<scope> runtime</scope>
</dependency>
<dependency>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-starter-test</artifactId>
<scope> test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
实体类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
@Entity
@Table ( name = "person" )
public class Person {
@Id
@GeneratedValue ( strategy = GenerationType . IDENTITY )
private Integer uId ;
private String uName ;
private Integer uAge ;
private String uAddr ;
public Integer getuId () {
return uId ;
}
public void setuId ( Integer uId ) {
this . uId = uId ;
}
public String getuName () {
return uName ;
}
public void setuName ( String uName ) {
this . uName = uName ;
}
public Integer getuAge () {
return uAge ;
}
public void setuAge ( Integer uAge ) {
this . uAge = uAge ;
}
public String getuAddr () {
return uAddr ;
}
public void setuAddr ( String uAddr ) {
this . uAddr = uAddr ;
}
@Override
public String toString () {
return "Person{" +
"uId=" + uId +
", uName='" + uName + '\'' +
", uAge=" + uAge +
", uAddr='" + uAddr + '\'' +
'}' ;
}
}
接口
1
2
public interface PersonRepository extends JpaRepository < Person , Integer > {
}
springboot配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#数据库
spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver
spring.datasource.username = root
spring.datasource.password = root
spring.datasource.url = jdbc:mysql://localhost:3306/springboot?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
#配置jpa 这个就在springboot自带的配置里
spring.jpa.database = mysql
spring.jpa.hibernate.ddl-auto = update
spring.jpa.show-sql = true
spring.jpa.generate-ddl = true
# 根据属性自己创建数据库名称,无需@Column
# https://blog.csdn.net/zhaow823/article/details/81975317
spring.jpa.hibernate.naming.physical-strategy = org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
测试类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@SpringBootTest
class SpringbootJpaApplicationTests {
@Autowired
PersonRepository personRepository ;
@Test
void contextLoads () {
Person person = new Person ();
person . setuName ( "hh" );
person . setuAge ( 10 );
person . setuAddr ( "武汉" );
personRepository . save ( person );
List < Person > all = personRepository . findAll ();
System . out . println ( all );
}
}
5.4 springboot整合Redis pom
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd" >
<modelVersion> 4.0.0</modelVersion>
<parent>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-starter-parent</artifactId>
<version> 2.4.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId> top.meethigher</groupId>
<artifactId> springboot_redis</artifactId>
<version> 0.0.1-SNAPSHOT</version>
<name> springboot_redis</name>
<description> Demo project for Spring Boot</description>
<properties>
<java.version> 11</java.version>
</properties>
<dependencies>
<dependency>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-starter-test</artifactId>
<scope> test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId> org.projectlombok</groupId>
<artifactId> lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
springboot配置
1
2
spring.redis.host = 127.0.0.1
spring.redis.port = 6379
测试类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@SpringBootTest
class SpringbootRedisApplicationTests {
@Autowired
private RedisTemplate < String , String > redis ;
@Test
void contextLoads () {
//1.从redis中获得数据,数据形式json字符串
String s = redis . boundValueOps ( "user.findAll" ). get ();
//2.判断redis中是否存在数据,不存在就从数据库查,否则就直接缓存返回并打印
if ( s == null ){
redis . boundValueOps ( "user.findAll" ). set ( "哈哈哈哈" );
}
System . out . println ( s );
}
}
六、实用功能 6.1 发送邮件 导入依赖
1
2
3
4
<dependency>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-starter-mail</artifactId>
</dependency>
application.yml
1
2
3
4
5
6
7
spring :
mail :
port : 80
host : smtp.mxhichina.com
username : admin
password : admin
protocol : smtp
发送邮件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
@SpringBootTest
class DemoApplicationTests {
@Autowired
JavaMailSender javaMailSender ;
@Value ( "${spring.mail.username}" )
private String from ;
/**
* 简单邮件
*/
@Test
void contextLoads () {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage ();
simpleMailMessage . setSubject ( "小狂神你好呀" );
simpleMailMessage . setText ( "halo wode" );
simpleMailMessage . setTo ( "24736743@qq.com" );
simpleMailMessage . setFrom ( from );
javaMailSender . send ( simpleMailMessage );
}
/**
* 复杂邮件
*/
@Test
void contextLoads2 () throws MessagingException {
MimeMessage mimeMessage = javaMailSender . createMimeMessage ();
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper ( mimeMessage , true );
mimeMessageHelper . setSubject ( "小狂神你好呀" );
mimeMessageHelper . setText ( "halo wode" );
mimeMessageHelper . addAttachment ( "1.jpg" , new File ( "src/main/resources/static/壁纸14.jpg" ));
mimeMessageHelper . setTo ( "24736743@qq.com" );
mimeMessageHelper . setFrom ( from );
javaMailSender . send ( mimeMessage );
}
}
注意
如果想发送html邮件,需要注意应该用的是复杂邮件,并设置响应类型为text/html
6.2 定时任务 springboot中提供的定时任务有两种
TaskExecutor:任务执行 TaskScheduler:任务调度@EnableScheduling:开启定时功能的注解,一般是在启动类 @Scheduled:表示什么时候执行,给要执行的方法添加即可 cron表达式
秒:0-59,0/5表示每5秒 分:0-59 时:0-23 日:0-31 月:0-11 周几:0-7,其中0和7都表示周日 cron表达式在线解析
1
2
3
4
5
6
7
8
@Service
public class ScheduledService {
private Logger log = LoggerFactory . getLogger ( ScheduledService . class );
@Scheduled ( cron = "0 * * * * *" ) //每到0秒的时候执行
public void hello (){
log . info ( "halo wode" );
}
}
6.3 异步执行 这个可以与前端的ajax类似。
启动类@EnableAsync,开启异步
想要异步执行的方法上加@Async
七、一些坑 获取配置文件内容 在properties配置文件中,中文读取会乱码,中文需要设置成unicode编码
给内部类中属性赋值,内部类需要用static修饰,具体原因不明
application.properties
1
2
# 配置自定义的kafka's topic
kafka-topic.topic.task-monitor = task-monitor-topic
KafkaTopic.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
@Configuration
@ConfigurationProperties ( prefix = "kafka-topic" )
public class KafkaTopic {
private TopicName topic ;
//如果有static的话,是可以获取TopicName下的变量值,但是不加static就会报错
static class TopicName {
private String taskMonitor ;
public String getTaskMonitor () {
return taskMonitor ;
}
public void setTaskMonitor ( String taskMonitor ) {
this . taskMonitor = taskMonitor ;
}
}
public TopicName getTopic () {
return topic ;
}
public void setTopic ( TopicName topic ) {
this . topic = topic ;
}
}