目录

一、工程创建

1.1 父工程

1.1.1 添加标签

1.1.2 删除规定依赖版本

1.1.3 依赖

1.1.4 删除src文件夹

1.2 子工程1

1.2.1 new module

1.2.2 选用maven工程

1.2.3 添加

1.2.4 引入依赖

1.2.5 删除src

1.3 子子模块1

1.3.1 new module

1.3.2 新建application.properties文件

1.3.3 代码生成器

1.3.4 新建启动类

1.3.5 添加mybatis扫描mapper

1.3.6 设置时间格式

1.3.7 逻辑删除

1.4 公共模块

1.4.1 new module

1.4.2 swagger依赖

1.4.3 公共模块的子模块

1.4.4 swagger配置类

1.4.5 使用依赖

1.4.6 扫描到swaggerConfig

1.4.7 访问

1.5 utils模块

1.5.1 统一返回结果

1.5.2 引入

1.5.3 封装前端传递参数用vo

1.5.4 自定义异常

1.6 日志处理  (logback springboot自带)

1.6.1 关闭其它日志配置

1.6.3 logback-spring.xml

1.6.4 写入日志

1.7 一些问题

1.7.1 第二个项目启动失败

二、前端

2.1 工具介绍

2.1.1  es6

2.1.2 node.js

2.1.3 npm

2.1.4 babel

2.1.5 webback

2.2 nginx

2.2.1 代理

三、springcloud

3.1 搭建

3.1.1 依赖

3.2 注册中心Nacos

3.2.1 一个springboot项目,调用另外一个springboot项目的api

3.2.1 使用

3.2.2 注册

3.3 调用

3.3.1 依赖

3.3.2 在调用端添加注解

3.3.3 创建接口

3.4 熔断器

3.4.1 概念

3.4.2 依赖

3.4.3 出错后调用

四、网关

4.1 使用

4.1.1 新建module

4.1.2 依赖

4.1.3 配置文件

4.1.4 启动类

4.1.5 统一跨域处理

五、SpringSecurity

5.1 环境搭建

5.1.1 创建Module

5.1.2 引入依赖

5.1.3 在相应模块引入SpringSecurity

5.1.4 编写查询类

六、配置中心

6.1 步骤

6.1.1  新建

6.1.2 依赖

6.1.3 新建bootstrap.prpperties

6.2 多环境切换

6.2.1 概述

6.2.2 创建命名空间

​ 6.2.3 使用

6.3 加载多个配置文件


一、工程创建

1.1 父工程

1.1.1 添加<packing>标签

1.1.2 删除<dependencies>规定依赖版本

1.1.3 依赖

1.1.4 删除src文件夹

1.2 子工程1

1.2.1 new module

1.2.2 选用maven工程

1.2.3 添加<pom>

1.2.4 引入依赖

1.2.5 删除src

1.3 子子模块1

1.3.1 new module

1.3.2 新建application.properties文件

1.3.3 代码生成器

package com.gzj.demo;import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import org.junit.Test;public class CodeGenerator {@Testpublic void main1() {// 1、创建代码生成器AutoGenerator mpg = new AutoGenerator();// 2、全局配置GlobalConfig gc = new GlobalConfig();String projectPath = System.getProperty("user.dir");System.out.println(projectPath);gc.setOutputDir("D:\\123\\guli_parent\\service\\service_edu" + "/src/main/java");gc.setAuthor("atguigu");gc.setOpen(false); //生成后是否打开资源管理器gc.setFileOverride(false); //重新生成时文件是否覆盖/** mp生成service层代码,默认接口名称第一个字母有 I* UcenterService* */gc.setServiceName("%sService");    //去掉Service接口的首字母Igc.setIdType(IdType.ID_WORKER_STR); //主键策略gc.setDateType(DateType.ONLY_DATE);//定义生成的实体类中日期类型gc.setSwagger2(true);//开启Swagger2模式mpg.setGlobalConfig(gc);// 3、数据源配置DataSourceConfig dsc = new DataSourceConfig();dsc.setUrl("jdbc:mysql://localhost:3306/guli?serverTimezone=GMT%2B8");dsc.setDriverName("com.mysql.cj.jdbc.Driver");dsc.setUsername("root");dsc.setPassword("123456");dsc.setDbType(DbType.MYSQL);mpg.setDataSource(dsc);// 4、包配置PackageConfig pc = new PackageConfig();pc.setModuleName("serviceedu"); //模块名pc.setParent("com.atguigu");pc.setController("controller");pc.setEntity("entity");pc.setService("service");pc.setMapper("mapper");mpg.setPackageInfo(pc);// 5、策略配置StrategyConfig strategy = new StrategyConfig();strategy.setInclude("edu_chapter", "edu_course", "edu_course_description", "edu_video");strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略strategy.setTablePrefix(pc.getModuleName() + "_"); //生成实体时去掉表前缀strategy.setColumnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter链式操作strategy.setRestControllerStyle(true); //restful api风格控制器strategy.setControllerMappingHyphenStyle(true); //url中驼峰转连字符mpg.setStrategy(strategy);// 6、执行mpg.execute();}
}

1.3.4 新建启动类

package com.gzj.eduservice;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class EduApplication {public static void main(String[] args) {SpringApplication.run(EduApplication.class,args);}
}

1.3.5 添加mybatis扫描mapper

package com.gzj.eduservice.config;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Configuration;@Configuration
@MapperScan("com.gzj.eduservice.mapper")
public class EduConfig {
}

1.3.6 设置时间格式

spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8

1.3.7 逻辑删除

有一个字段代表是否删除 1删除  0未删除

    @DeleteMapping("{id}")public boolean removeTeacher(@PathVariable("id")String id){boolean flag = eduTeacherService.removeById(id);return flag;}

1.4 公共模块

1.4.1 new module

删除src

1.4.2 swagger依赖

        <!--swagger--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><scope>provided </scope></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><scope>provided </scope></dependency>

1.4.3 公共模块的子模块

1.4.4 swagger配置类

package com.gzj.servicebase;import com.google.common.base.Predicates;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;@Configuration
@EnableSwagger2
public class SwaggerConfig {@Beanpublic Docket webApiConfig(){return new Docket(DocumentationType.SWAGGER_2).groupName("webApi").apiInfo(webApiInfo()).select()
//                .paths(Predicates.not(PathSelectors.regex("/admin/.*"))).paths(Predicates.not(PathSelectors.regex("/error.*"))).build();}private ApiInfo webApiInfo(){return new ApiInfoBuilder().title("网站-课程中心API文档").description("本文档描述了课程中心微服务接口定义").version("1.0").contact(new Contact("Helen", "http://atguigu.com", "55317332@qq.com")).build();}
}

1.4.5 使用依赖

service的pom引入common下的servicebase

1.4.6 扫描到swaggerConfig

1.4.7 访问

1.5 utils模块

1.5.1 统一返回结果

package com.gzj.commonutils;public interface ResultCode {public static Integer SUCCESS = 20000;//成功public static Integer ERROR = 20001;//失败
}
package com.gzj.commonutils;import io.swagger.annotations.ApiModelProperty;
import lombok.Data;import java.util.HashMap;
import java.util.Map;@Data
public class R {@ApiModelProperty(value = "是否成功")private Boolean success;@ApiModelProperty(value = "返回码")private Integer code;@ApiModelProperty(value = "返回消息")private String message;@ApiModelProperty(value = "返回数据")private Map<String, Object> data = new HashMap<String, Object>();//构造器私有化private R() {}//成功静态方法public static R ok() {R r = new R();r.setSuccess(true);r.setCode(ResultCode.SUCCESS);r.setMessage("成功");return r;}//失败静态方法public static R error() {R r = new R();r.setSuccess(false);r.setCode(ResultCode.ERROR);r.setMessage("失败");return r;}public R success(Boolean success) {this.setSuccess(success);return this;}public R message(String message) {this.setMessage(message);return this;}public R code(Integer code) {this.setCode(code);return this;}public R data(String key, Object value) {this.data.put(key, value);return this;}public R data(Map<String, Object> map) {this.setData(map);return this;}
}

1.5.2 引入

service的pom文件

        <dependency><groupId>com.gzj</groupId><artifactId>common_utils</artifactId><version>0.0.1-SNAPSHOT</version></dependency>
    public R findALLTeacher(){List<EduTeacher> list = eduTeacherService.list(null);return R.ok().data("items",list);}

1.5.3 封装前端传递参数用vo

1.5.4 自定义异常

package com.gzj.servicebase.exceptionhandler;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@AllArgsConstructor
@NoArgsConstructor
public class GuliException {private Integer code;private String msg;
}
package com.gzj.servicebase.exceptionhandler;import com.gzj.commonutils.R;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;@ControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler(Exception.class)@ResponseBodypublic R error(Exception e){e.printStackTrace();return R.error().message("发生异常!");}@ExceptionHandler(GuliException.class)@ResponseBodypublic R error(GuliException e){e.printStackTrace();return R.error().code(e.getCode()).message(e.getMsg());}
}

1.6 日志处理  (logback springboot自带)

1.6.1 关闭其它日志配置

mybatis-plus

#mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

1.6.3 logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="10 seconds"><!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 --><!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true --><!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 --><!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 --><contextName>logback</contextName><!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 --><property name="log.path" value="D:/AAguli_log/edu"/><!-- 彩色日志 --><!-- 配置格式变量:CONSOLE_LOG_PATTERN 彩色日志格式 --><!-- magenta:洋红 --><!-- boldMagenta:粗红--><!-- cyan:青色 --><!-- white:白色 --><!-- magenta:洋红 --><property name="CONSOLE_LOG_PATTERN"value="%yellow(%date{yyyy-MM-dd HH:mm:ss}) |%highlight(%-5level) |%blue(%thread) |%blue(%file:%line) |%green(%logger) |%cyan(%msg%n)"/><!--输出到控制台--><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息--><!-- 例如:如果此处配置了INFO级别,则后面其他位置即使配置了DEBUG级别的日志,也不会被输出 --><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>INFO</level></filter><encoder><Pattern>${CONSOLE_LOG_PATTERN}</Pattern><!-- 设置字符集 --><charset>UTF-8</charset></encoder></appender><!--输出到文件--><!-- 时间滚动输出 level为 INFO 日志 --><appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在记录的日志文件的路径及文件名 --><file>${log.path}/log_info.log</file><!--日志文件输出格式--><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern><charset>UTF-8</charset></encoder><!-- 日志记录器的滚动策略,按日期,按大小记录 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 每天日志归档路径以及格式 --><fileNamePattern>${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>100MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><!--日志文件保留天数--><maxHistory>15</maxHistory></rollingPolicy><!-- 此日志文件只记录info级别的 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>INFO</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!-- 时间滚动输出 level为 WARN 日志 --><appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在记录的日志文件的路径及文件名 --><file>${log.path}/log_warn.log</file><!--日志文件输出格式--><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern><charset>UTF-8</charset> <!-- 此处设置字符集 --></encoder><!-- 日志记录器的滚动策略,按日期,按大小记录 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${log.path}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>100MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><!--日志文件保留天数--><maxHistory>15</maxHistory></rollingPolicy><!-- 此日志文件只记录warn级别的 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>warn</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!-- 时间滚动输出 level为 ERROR 日志 --><appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在记录的日志文件的路径及文件名 --><file>${log.path}/log_error.log</file><!--日志文件输出格式--><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern><charset>UTF-8</charset> <!-- 此处设置字符集 --></encoder><!-- 日志记录器的滚动策略,按日期,按大小记录 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${log.path}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>100MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><!--日志文件保留天数--><maxHistory>15</maxHistory></rollingPolicy><!-- 此日志文件只记录ERROR级别的 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!--<logger>用来设置某一个包或者具体的某一个类的日志打印级别、以及指定<appender>。<logger>仅有一个name属性,一个可选的level和一个可选的addtivity属性。name:用来指定受此logger约束的某一个包或者具体的某一个类。level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,如果未设置此属性,那么当前logger将会继承上级的级别。--><!--使用mybatis的时候,sql语句是debug下才会打印,而这里我们只配置了info,所以想要查看sql语句的话,有以下两种操作:第一种把<root level="INFO">改成<root level="DEBUG">这样就会打印sql,不过这样日志那边会出现很多其他消息第二种就是单独给mapper下目录配置DEBUG模式,代码如下,这样配置sql语句会打印,其他还是正常DEBUG级别:--><!--开发环境:打印控制台--><springProfile name="dev"><!--可以输出项目中的debug日志,包括mybatis的sql日志--><logger name="com.guli" level="INFO"/><!--root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,默认是DEBUG可以包含零个或多个appender元素。--><root level="INFO"><appender-ref ref="CONSOLE"/><appender-ref ref="INFO_FILE"/><appender-ref ref="WARN_FILE"/><appender-ref ref="ERROR_FILE"/></root></springProfile><!--生产环境:输出到文件--><springProfile name="pro"><root level="INFO"><appender-ref ref="CONSOLE"/><appender-ref ref="DEBUG_FILE"/><appender-ref ref="INFO_FILE"/><appender-ref ref="ERROR_FILE"/><appender-ref ref="WARN_FILE"/></root></springProfile></configuration>

1.6.4 写入日志

1、加上@Sl4j注解

2、log.info();

1.7 一些问题

1.7.1 第二个项目启动失败

二、前端

2.1 工具介绍

2.1.1  es6

一个javascrip语法的规范协议

2.1.2 node.js

就像java的运行环境是jdk,那么javascript的运行环境可以用node.js

2.1.3 npm

相当于maven

2.1.4 babel

把es6语法转为es5的,因为es5的语法浏览器兼容性更好

2.1.5 webback

打包工具

2.2 nginx

2.2.1 代理

加 “~” 只要路径包含该字符串就行,正则匹配

不加“~”,完全匹配

三、springcloud

3.1 搭建

3.1.1 依赖

            <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Hoxton.RELEASE</version><type>pom</type><scope>import</scope></dependency>

3.2 注册中心Nacos

3.2.1 一个springboot项目,调用另外一个springboot项目的api

通过ip+port访问

3.2.1 使用

解压启动

访问路径

http://192.168.2.1:8840/nacos

初始账号密码

nacos  nacos

3.2.2 注册

引入依赖

        <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>

配置文件

#服务名称
spring.application.name=service-edu
spring.cloud.nacos.discovery.server-addr=192.168.2.1:8840

注解

重新启动

3.3 调用

3.3.1 依赖

        <!--服务调用--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>

3.3.2 在调用端添加注解

3.3.3 创建接口

消费者

生产者

在调用方新建接口

package com.gzj.eduservice.client;import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;@Component
@FeignClient("service-oss")
public interface VodClient {@RequestMapping("/oss/test")public String test();
}

3.4 熔断器

3.4.1 概念

1、如果生产者挂掉,熔断器会停止此次请求

2、如果生产者运行过慢,熔断器可以设置最长请求时间

3.4.2 依赖

        <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-ribbon</artifactId></dependency><!--hystrix依赖,主要是用  @HystrixCommand --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId></dependency>
feign.hystrix.enabled=true

3.4.3 出错后调用

package com.gzj.eduservice.client;import org.springframework.stereotype.Component;@Component
public class VodImpl implements VodClient{@Overridepublic String test() {System.out.println("失败后调用此方法");return "出错";}
}

四、网关

4.1 使用

4.1.1 新建module

4.1.2 依赖

        <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!--服务调用--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>

4.1.3 配置文件

server.port=8082
#服务名称
spring.application.name=service-gateway
spring.cloud.nacos.discovery.server-addr=192.168.2.1:8840#使用服务发现路由
spring.cloud.gateway.discovery.locator.enabled=true#名称
spring.cloud.gateway.routes[0].id=service-edu
#服务注册中心的名称
spring.cloud.gateway.routes[0].uri=lb://service-edu
#路径匹配
spring.cloud.gateway.routes[0].predicates= Path=/eduservice/**#名称
spring.cloud.gateway.routes[1].id=service-oss
#服务注册中心的名称
spring.cloud.gateway.routes[1].uri=lb://service-oss
#路径匹配
spring.cloud.gateway.routes[1].predicates= Path=/oss/**

4.1.4 启动类

package com.gzj.gate;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient
public class GateApplication {public static void main(String[] args) {SpringApplication.run(GateApplication.class,args);}
}

4.1.5 统一跨域处理

package com.gzj.gate.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;
import org.springframework.web.util.pattern.PathPatternParser;/*** <p>* 处理跨域* </p>*/
@Configuration
public class CorsConfig {@Beanpublic CorsWebFilter corsFilter() {CorsConfiguration config = new CorsConfiguration();config.addAllowedMethod("*");config.addAllowedOrigin("*");config.addAllowedHeader("*");UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser());source.registerCorsConfiguration("/**", config);return new CorsWebFilter(source);}
}

五、SpringSecurity

5.1 环境搭建

5.1.1 创建Module

5.1.2 引入依赖

        <!-- Spring Security依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency>

5.1.3 在相应模块引入SpringSecurity

5.1.4 编写查询类

六、配置中心

6.1 步骤

6.1.1  新建

6.1.2 依赖

        <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency>

6.1.3 新建bootstrap.prpperties

spring.cloud.nacos.config.server-addr=127.0.0.1:8840
spring.application.name=service-statistics

6.2 多环境切换

6.2.1 概述

默认public

6.2.2 创建命名空间

 6.2.3 使用

spring.cloud.nacos.config.server-addr=127.0.0.1:8840
spring.application.name=service-statisticsspring.profiles.active=dev
spring.cloud.nacos.config.namespace=af13fcb2-4741-4e6e-a013-0e9351cbc2b3

6.3 加载多个配置文件

spring.cloud.nacos.config.server-addr=127.0.0.1:8840
spring.application.name=service-statisticsspring.profiles.active=dev
spring.cloud.nacos.config.namespace=af13fcb2-4741-4e6e-a013-0e9351cbc2b3spring.cloud.nacos.config.ext-config[0].data-id=redis.properties
spring.cloud.nacos.config.ext-config[0].refresh=true

谷粒学院111111相关推荐

  1. 尚硅谷谷粒学院学习笔记9--前台用户登录,注册,整合jwt,微信登录

    用户登录业务 单点登录(Single Sign On),简称SSO. 用户只需要登陆一次就可以访问所有相互信任的应用系统 单点登录三种常见方式 session广播机制实现 使用redis+cookie ...

  2. 谷粒学院day08——课程章节与小节的实现

    谷粒学院day08--课程章节与小节的实现 1.添加课程基本信息完善 1.1 整合文本编辑器 2.课程大纲管理 2.1 后端实现 2.2 前端实现 3.修改课程功能 3.1 后端实现 3.2 前端实现 ...

  3. 谷粒学院day9关于章节小节修改后无法添加的bug记录

    关于之前困扰的一个问题,谷粒学院day09那的一个bug 问题描述: 章节小节添加都可以正常添加 修改的时候也可以正常修改,问题就出在修改完后无法在添加了,还是会显示修改 解决办法*:由于当时初学的时 ...

  4. Day215.课程详细页面功能完善、Echarts统计分析模块[生成统计数据+生成图表]前后端整合 -谷粒学院

    谷粒学院 课程详细页面功能完善 一.修改课程详细接口 1.在service_order模块添加接口 用于判断订单中status值是否为1,为1则为已支付 @RestController @CrossO ...

  5. 阿里云短信服务不对个人开放?如何在阿里云市场免费购买短信服务?云市场购买到的短信服务如何使用?(以谷粒学院项目为例)

    问题描述: 在做谷粒学院项目时,需要使用阿里云的短信服务用于注册验证,但是阿里云的短信服务目前不对个人开放了,看到弹幕说可以在云市场购买,于是果断尝试了一把,这过程中又遇到头疼的依赖版本兼容问题,好在 ...

  6. 05-阿里云视频点播服务与谷粒学院整合视频点播技术

    阿里云视频点播服务与谷粒学院整合视频点播技术 一.应用场景 音视频网站:无论是初创视频服务企业,还是已拥有海量视频资源,可定制化的点播服务帮助客户快速搭建拥有极致观看体验.安全可靠的视频点播应用. 短 ...

  7. 【谷粒学院】001-项目概述、Mybatis Plus入门

    目录 一.项目概述 1.项目来源 2.功能简介 3.技术架构 二.Mybatis-Plus概述 1.简介 2.特性 三.Mybatis-Plus入门 1.创建数据库 2.创建 User 表 表结构: ...

  8. 谷粒学院 01_在线教育行业介绍

    一.什么是在线教育 1.起源 萨尔曼·可汗:孟加拉裔,1976年出生在美国,教育工作者,可汗学院(Khan Academy - https://www.khanacademy.org/)的创始人. 2 ...

  9. 尚硅谷谷粒学院学习笔记(防坑点的总结部分勘误)

    谷粒学院学习笔记 部分勘误 数据库设计规约 模块说明 环境搭建 创建一个Spring Boot 的父工程,版本使用:2.2.1.RELEASE 父工程pom.xml里面添加 在pom.xml中添加依赖 ...

  10. 谷粒学院订单管理 server-order 模块

    谷粒学院订单管理 server-order 模块 模块介绍 主要实现前台页面购买课程后,生成订单,并实现微信支付的功能. ![]](https://img-blog.csdnimg.cn/7b821f ...

最新文章

  1. 值传递、指针传递、引用传递的区别
  2. Mac os下安装brew
  3. Oracle中shrink space命令详解
  4. SNF开发平台WinForm之十二-发送手机短信功能调用-金笛-SNF快速开发平台3.3-Spring.Net.Framework...
  5. windos开启IIS管理器
  6. centos7安装bbr_Centos7下,BBR修正版 一键安装与使用
  7. github构建自己的代码库
  8. 华为手机日历倒计时_华为手机日历日程提醒不响怎么解决?
  9. 一名股票量化交易者该如何管理股票数据——股票代码表的维护
  10. 呼叫中心与网络电话的区别,看完懂了!
  11. 还不了解MySQL的指令?有它就够了!
  12. 一键学会三种定位布局,相对定位、绝对定位、固定定位!
  13. php获取两个时间戳之间相隔多少天多少小时多少分多少秒
  14. php常见错误,php常见错误及错误处理 - 小俊学习网
  15. 2010-2019,我,一个普通职场人的十年变迁
  16. python 模块paramiko
  17. 精选(63) 面试官:说一下的 dubbo 的工作原理?注册中心挂了可以继续通信吗?说说一次 rpc 请求的流程?
  18. 【营销】史上最全4P、4C、4S、4R、4V、4I营销理论
  19. Latex中调整三线表行间距
  20. Docker安装halo

热门文章

  1. 70个python毕设项目_这10个Python项目很有趣!
  2. 源码-PL/SQL从入门到精通-第二章-PL/SQL基本概念-Part 2
  3. c语言图书管理实验报告,图书管理系统c语言程序设计实验报告
  4. Kotlin快速入门文档
  5. python运维开发实战项目-1
  6. Java后端开发工程师学习笔记【狂神说Java笔记】
  7. springboot项目启动类报错
  8. 【读书笔记】浪潮之巅——公司史篇
  9. 【资源下载】netassist 下载 资源下载
  10. Aardio格式化代码工具