一:参考文档
本测试案例在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 #关键部分。禁止打印日志
|

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); }
}
|

2.4 测试类
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; }
|
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); }
}
|
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 # 对应的根路径的名称
|


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