后端框架从eureka升级到nocas步骤遇到的问题及解决方案

  1. 修改pom文件,升级引入的依赖,添加注册到nacos的依赖


    image.png
  2. 修改配置文件(配置文件主要内容在nacos配置中心配置--数据源配置等)


    image.png

    image.png

    将Git中将之前的配置信息迁移至Nacos新的配置中

  3. 通过 Spring Cloud 原生注解 @RefreshScope实现配置自动更新


    image.png
  4. 注意事项: 修改因为升级需要升级的相关组件,比如(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>

  1. 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

  1. 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;
    }

}```
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容