Skip to content

升级注册中心

变动清单

pangea-demo
|
|── pom.xml  #修改spring boot、jhipster版本号及添加nacos相关依赖,删除eureka相关依赖
|
|── bootstrap.yml #添加nacos配置参数
|
|—— application*.yml #屏蔽eureka配置

1.pom.xml

修改spring-boot及jhipster版本

xml
<jhipster-dependencies.version>3.6.0</jhipster-dependencies.version>
<spring-boot.version>2.2.5.RELEASE</spring-boot.version>

添加nacos相关依赖包,代码如下:

xml
 <dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>2.2.1.RELEASE</version>
</dependency>

<!-- SpringCloud Ailibaba Nacos Config -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>2.2.1.RELEASE</version>
</dependency>

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
    <version>2.2.2.RELEASE</version>
</dependency>

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
    <version>2.2.1.RELEASE</version>
</dependency>

删除eureka相关依赖

yaml
<!--        
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
-->

注意

因修改spring-boot及jhipster相关依赖包版本, 可能会引起以下修改。

  • BaseRepositoryFactoryBean.java
java
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.support.JpaRepositoryFactory;
import org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean;
import org.springframework.data.jpa.repository.support.JpaRepositoryImplementation;
import org.springframework.data.jpa.repository.support.SimpleJpaRepository;
import org.springframework.data.repository.core.RepositoryInformation;
import org.springframework.data.repository.core.RepositoryMetadata;
import org.springframework.data.repository.core.support.RepositoryFactorySupport;

import javax.persistence.EntityManager;
import java.io.Serializable;

public class BaseRepositoryFactoryBean<R extends JpaRepository<T, I>, T, I extends Serializable> extends JpaRepositoryFactoryBean<R, T, I> {

    public BaseRepositoryFactoryBean(Class<? extends R> repositoryInterface) {
        super(repositoryInterface);
    }

    @Override
    protected RepositoryFactorySupport createRepositoryFactory(EntityManager em) {
        return new BaseRepositoryFactory(em);
    }

    private static class BaseRepositoryFactory<T, I extends Serializable>
        extends JpaRepositoryFactory {

        private final EntityManager em;

        public BaseRepositoryFactory(EntityManager em) {
            super(em);
            this.em = em;
        }

        //注释掉原有的getTargetRepository实现
//        @Override
//        protected Object getTargetRepository(RepositoryInformation information,  EntityManager em) {
//            return new BaseRepositoryImpl<T, I>((Class<T>) information.getDomainType(), em);
//        }
        //添加新版本getTargetRepository实现
        @Override
        protected SimpleJpaRepository<T, Serializable> getTargetRepository(RepositoryInformation information, EntityManager entityManager) {
            return new BaseRepositoryImpl(information.getDomainType(), entityManager);
        }
        //设置具体的实现类的class
        @Override
        protected Class<?> getRepositoryBaseClass(RepositoryMetadata metadata) {
            return BaseRepositoryImpl.class;
        }

    }
}

2.bootstrap.yml

添加nacos配置参数

yaml
spring:
  cloud:
    nacos:
      server-addr: http://${NACOS_ADDR:127.0.0.1:8848}
      discovery:
        server-addr: ${spring.cloud.nacos.server-addr}
        namespace: ${NAME_SPACE:public}
      config:
        server-addr: ${spring.cloud.nacos.server-addr}
        file-extension: yaml
        namespace: ${NAME_SPACE:public}

3. application*.yml

屏蔽application.yml中的eureka配置

yaml
#eureka:
#    client:
#        enabled: true
#        healthcheck:
#            enabled: true
#        fetch-registry: true
#        register-with-eureka: true
#        instance-info-replication-interval-seconds: 10
#        registry-fetch-interval-seconds: 10
#    instance:
#        appname: ${spring.application.name}
#        instanceId: ${spring.application.name}:${spring.application.instance-id:${random.value}}
#        lease-renewal-interval-in-seconds: 5
#        lease-expiration-duration-in-seconds: 10
#        status-page-url-path: ${management.endpoints.web.base-path}/info
#        health-check-url-path: ${management.endpoints.web.base-path}/health
#        metadata-map:
#            zone: primary # This is needed for the load balancer
#            profile: ${spring.profiles.active}
#            version: ${info.project.version:}
#            git-version: ${git.commit.id.describe:}
#            git-commit: ${git.commit.id.abbrev:}
#            git-branch: ${git.branch:}

屏蔽application-dev.yml中的eureka配置

yaml
#eureka:
#    instance:
#        prefer-ip-address: true
#    client:
#        service-url:
#            defaultZone: http://admin:admin@hisense-jhipster-registry-hisense-framework.devapp.hisense.com:80/eureka/
##            defaultZone: http://admin:${jhipster.registry.password}@${EUREKA_HOST:localhost}:8761/eureka/
##            defaultZone: http://admin:${jhipster.registry.password}@${EUREKA_HOST:localhost}:${EUREKA_PORT:8761}/eureka/
#        enabled: false #添加该行,系统不去注册器注册

屏蔽application-prod.yml中的eureka配置

yaml
#eureka:
#    instance:
#        prefer-ip-address: true
#    client:
#        service-url:
#            defaultZone: http://admin:${jhipster.registry.password}@${EUREKA_HOST:localhost}:8761/eureka/