老鬼的博客 来都来啦,那就随便看看吧~
springboot整合nacos配置中心
发布于: 2022-12-01 更新于: 2022-12-01 分类于:  阅读次数: 

一:参考文档

本测试案例在miniprogram项目中的Branch_nacos_20221130分支

二:详细步骤

2.1 pom.xml

1
2
3
4
5
6
7
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-starter</artifactId>
<version>0.2.12</version>
</dependency>

注意版本,可以使用最新的版本

2.2 application.yml

  • 简短配置
1
2
3
4
5
6
7
8
9
10
11
12
新增nacos配置:
# nacos
nacos:
config:
server-addr: 127.0.0.1:8848 # nacos server地址
namespace: ${spring.profiles.active} # 命名空间不是public要单独设置
dataId: ${spring.application.name}-${spring.profiles.active}.yml # dataId
groupId: ${spring.profiles.active} # groupId

上面的server地址就是nacos本地启动的地址
其中dataId使用应用名称-profile.yml
groupId使用profile。
  • 完成配置
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125


# MD转换文件临时路径

MD_TMP_DIR: D:\root\public\mdtmpfile


# nacos
nacos:
config:
server-addr: 127.0.0.1:8848 # nacos server地址
namespace: ${spring.profiles.active} # 命名空间不是public要单独设置
dataId: ${spring.application.name}-${spring.profiles.active}.yml # dataId
groupId: ${spring.profiles.active} # groupId


# profileActive
spring:
application:
name: miniprogram
mvc:
view:
prefix: /WEB-INF/
suffix: .jsp
profiles:
active: dev
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
serialization:
write-dates-as-timestamps: false
http:
encoding:
force: true
charset: UTF-8
enabled: true
force-response: true
#thymelea模板配置
thymeleaf:
prefix: classpath:/templates/
suffix: .html
mode: HTML5
encoding: UTF-8
content-type: text/html
cache: false
enabled: true
#文件上传限制
servlet:
multipart:
enabled: true #是否启用http上传处理
max-request-size: 200MB #最大请求文件的大小
max-file-size: 100MB #设置单个文件最大长度

# 信息安全
security:
csrf:
enable: true
excludes:

# session超时时间
server:
session:
timeout: 30
cookie:
secure: true
http-only: true
store-type: redis # 使用redis存储session

servlet:
context-path: /miniprogram # context-path
encoding:
enabled: true
charset: UTF-8
force: true
multipart:
enabled: true
max-file-size: 100MB #单个文件的最大上限
max-request-size: 100MB #单个请求的文件总大小上限
port: 10034
tomcat:
uri-encodeing: utf-8 # tomcat uri-encoding
max-http-post-size: 100MB #请求参数长度

# 日志的配置文件,默认是logback-spring.xml,如果使用别名则需要配置loggin.config

logging:
config: classpath:logback-spring.xml



# mybatis-plus
mybatis-plus:
# 如果是放在resource目录 classpath:/mapper/*Mapper.xml
mapper-locations: classpath:com/tohours/miniprogram/mapper/xml/*Mapper.xml
#实体扫描,多个package用逗号或者分号分隔
typeAliasesPackage: com.tohours.miniprogram.entity
global-config:
#主键类型 0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
id-type: 3
#字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
field-strategy: 2
#驼峰下划线转换
db-column-underline: true
#mp2.3+ 全局表前缀 mp_
#table-prefix: mp_
#刷新mapper 调试神器
#refresh-mapper: true
#数据库大写下划线转换
#capital-mode: true
# Sequence序列接口实现类配置
#key-generator: com.baomidou.mybatisplus.incrementer.OracleKeyGenerator
#逻辑删除配置(下面3个配置)
logic-delete-value: 1
logic-not-delete-value: 0
# sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector
#自定义填充策略接口实现
# meta-object-handler: com.baomidou.springboot.MyMetaObjectHandler
configuration:
#配置返回数据库(column下划线命名&&返回java实体是驼峰命名),自动匹配无需as(没开启这个,SQL需要写as: select user_id as userId)
map-underscore-to-camel-case: true
cache-enabled: false
#配置JdbcTypeForNull, oracle数据库必须配置
jdbc-type-for-null: 'null'
call-setters-on-nulls: true
log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl #关键部分。禁止打印日志

1.png

2.3 Application.Java启动类

1
2
3
4
5
6
新增注解:
//Nacos配置
@NacosPropertySource(dataId = "${nacos.config.dataId}", autoRefreshed = true, groupId = "${nacos.config.groupId}")
//启用@ConfigurationProperties注解
@EnableConfigurationProperties
其中dataId和groupId就是nacos后台配置管理的新增的配置。
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
package com.tohours.miniprogram;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import com.alibaba.nacos.spring.context.annotation.config.NacosPropertySource;

@SpringBootApplication
@EnableTransactionManagement
@EnableScheduling
@EnableCaching
//Nacos配置
@NacosPropertySource(dataId = "${nacos.config.dataId}", autoRefreshed = true, groupId = "${nacos.config.groupId}")
//启用@ConfigurationProperties注解
@EnableConfigurationProperties
public class MiniprogramApplication {

public static void main(String[] args) {
SpringApplication.run(MiniprogramApplication.class, args);
}

}

1.png

2.4 测试类

  • Noss.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package com.tohours.miniprogram.constants.nacos;

import org.springframework.stereotype.Component;

import com.alibaba.nacos.api.config.annotation.NacosConfigurationProperties;

import lombok.Data;


@Component
@Data
@NacosConfigurationProperties(autoRefreshed = true,
dataId = "${nacos.config.dataId}",prefix = "oss",
groupId = "${nacos.config.groupId}")
public class Noss {
private String endpoint;
private String accessUrl;
private String accessKeyId;
private String accessKeySecret;
private String bucketName;
private String rootDirName;
}

  • TestNacosController.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
29
30
31
32
33
34
35
36
37
38
39
40
41
package com.tohours.miniprogram.controller;

import javax.annotation.Resource;

import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.api.config.annotation.NacosValue;
import com.tohours.miniprogram.constants.nacos.Noss;
import com.tohours.miniprogram.support.TohoursResponse;
import com.tohours.miniprogram.support.TohoursResult;

@RestController
@RequestMapping("/nacos")
@SuppressWarnings("rawtypes")
@CrossOrigin
public class TestNacosController extends BaseController {

@NacosValue(value = "${test}", autoRefreshed = true)
private String test;
@NacosValue(value = "${env.version}", autoRefreshed = true)
private String envVersion;
@Resource
private Noss noss;


@RequestMapping(value = "/test", method = RequestMethod.GET)
public TohoursResult test() {
JSONObject data = new JSONObject();
data.put("test", test);
data.put("envVersion", envVersion);
data.put("noss", noss);
return TohoursResponse.success(data);
}


}

  • Nacos配置中心配置
1
2
3
4
5
6
7
8
9
10
11
12
test: xxxT
env:
version: 1.0.3

# 阿里云oss
oss:
endpoint: https://tk.com # 生产要换成内网
accessUrl: https://tk.aliyuncs.com # 图片访问的路径
accessKeyId: LKWE123
accessKeySecret: KIW22
bucketName: campaign-dev # bucket的名字
rootDirName: dev # 对应的根路径的名称

1.png

1.png

2.5 测试

1
2
当你改动Nacos后台的配置文件的时候,再次访问Controller的
测试方法返回了最新配置的数据即表示成功。

1.png

*************感谢您的阅读*************