-
修改pom文件,升级引入的依赖,添加注册到nacos的依赖
image.png -
修改配置文件(配置文件主要内容在nacos配置中心配置--数据源配置等)
image.png
image.png
将Git中将之前的配置信息迁移至Nacos新的配置中
-
通过 Spring Cloud 原生注解 @RefreshScope实现配置自动更新
image.png - 注意事项: 修改因为升级需要升级的相关组件,比如(Hystrix、Feign 、Zuul、Eureka)
SpringCloud Hoxton版本对应的各组件POM依赖
Hystrix:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
Feign:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
Zuul:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
Eureka:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
-
springboot启动报错(未能配置数据源:未指定“url”属性,也无法配置嵌入式数据源.)
image.png
原因:
spring boot默认会加载org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration类,
DataSourceAutoConfiguration类使用了@Configuration注解向spring注入了dataSource bean。因为工程中
没有关于dataSource相关的配置信息,当spring创建dataSource bean因缺少相关的信息就会报错。
两种解决办法:
1.在Application类上加
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
2.配置数据源:
例如在application配置文件中:
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://ip:端口号/数据库名称?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
转载:https://www.cnblogs.com/zouwangblog/p/11139613.html
- Java Spring Boot 下配置HTTPS接口并实现HTTP访问自动转向,EmbeddedServletContainerFactory找不到
原因:
Spring Boot2.x版本中EmbeddedServletContainerFactory已经废弃改为TomcatServletWebServerFactory
原来代码EmbeddedServletContainerFactory
@Configuration
public class TomcatConfig {
@Bean
public EmbeddedServletContainerFactory servletContainer() {
TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {// 1
protected void postProcessContext(Context context) {
SecurityConstraint securityConstraint = new SecurityConstraint();
securityConstraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
collection.addMethod("HEAD");
collection.addMethod("PUT");
collection.addMethod("DELETE");
// collection.addMethod("OPTIONS");
collection.addMethod("TRACE");
collection.addMethod("COPY");
collection.addMethod("SEARCH");
collection.addMethod("PROPFIND");
securityConstraint.addCollection(collection);
context.addConstraint(securityConstraint);
}
};
//如果需要禁用TRACE请求,需添加以下代码:
tomcat.addConnectorCustomizers(connector -> {
connector.setAllowTrace(true);
});
return tomcat;
}
}
改为代码TomcatServletWebServerFactory
@Configuration
public class TomcatConfig {
@Bean
public TomcatServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {// 1
protected void postProcessContext(Context context) {
SecurityConstraint securityConstraint = new SecurityConstraint();
securityConstraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
collection.addMethod("HEAD");
collection.addMethod("PUT");
collection.addMethod("DELETE");
// collection.addMethod("OPTIONS");
collection.addMethod("TRACE");
collection.addMethod("COPY");
collection.addMethod("SEARCH");
collection.addMethod("PROPFIND");
securityConstraint.addCollection(collection);
context.addConstraint(securityConstraint);
}
};
//如果需要禁用TRACE请求,需添加以下代码:
tomcat.addConnectorCustomizers(connector -> {
connector.setAllowTrace(true);
});
return tomcat;
}
}```