Spring cloud-config客户端出现错误,无法配置数据源:未指定'url'属性

vngu2lb8  于 2022-11-29  发布在  Spring
关注(0)|答案(1)|浏览(132)
  1. Spring云配置服务器启动于application.properties:
server.port:8888
spring.application.name=test-config-server
spring.cloud.config.server.git.uri=https://gitlab.com/pearsontechnology/gpt/sms/sms-micro-services/config-server.git
spring.cloud.config.server.git.default-label=develop

#Private repo. access credentials
spring.cloud.config.server.git.username=xxx
spring.cloud.config.server.git.password=xxxx

spring.cloud.config.server.git.clone-on-start=true
spring.cloud.config.profile=dev

启动config-client时,* 无法配置数据源:未指定'url'属性,无法配置嵌入式数据源 *
我的spring boot、spring-cloud和依赖项的版本来自pom.xml,如下所示:

<artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.2</version>
<java.version>17</java.version>
<spring-cloud.version>2021.0.3</spring-cloud.version>

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>com.oracle.database.jdbc</groupId>
            <artifactId>ojdbc8</artifactId>
            <scope>runtime</scope>
        </dependency>

config-client应用程序属性:

spring.application.name=systems-lookup-service
spring.cloud.config.profile=dev
spring.config.import=optional:configserver:
server.port=8081

与数据源相关的属性,如url等,需要从systems-lookup-service-dev.propertiesGit上托管的www.example.com获取。

custom.url=jdbc:oracle:thin:@localhost:1998/smscert
custom.username=smscert
custom.password=go#salt
custom.driverClassName=

config-client中的DAO类访问数据库:

public class XXDaoImpl implements XXDao {

    private JdbcTemplate jdbcTemplate;

    @Autowired(required=false)
    private DataSourceConfig config;

    @Autowired
    public SystemDaoImpl(JdbcTemplate jdbcTemplateIn){
        final DataSource dataSource = DataSourceBuilder.create()
                                                        .driverClassName(config.getDriverClassName())
                                                        .url(config.getUrl())
                                                        .username(config.getUsername())
                                                        .password(config.getPassword())
                                                        .build();
        this.jdbcTemplate = new JdbcTemplate(dataSource);

    }
    
    ...............
}

@Component
@ConfigurationProperties("custom")
public class DataSourceConfig {

    private String url;

    private String username;

    private String password;

    //@Value("${greeting.message}")
    private String driverClassName;
    ....
}
rryofs0p

rryofs0p1#

我相信您遵循第一个引导为您的中央云注册这样做,您需要以下工件与您的客户端服务pom文件。

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

将以下属性添加到客户端服务属性文件application.prop

spring.application.name=systems-lookup-service
spring.cloud.config.uri=http://localhost:"cloud-config-port"
spring.profiles.active=dev
spring.config.import=optional:configserver:

在中央云配置的主类中添加注解@EnableConfigServer,并在其中的pom文件中添加以下工件

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
</dependency>

将以下属性附加到中央云配置属性文件

spring.application.name=configuration-server
server.port=8780
management.endpoints.web.exposure.include=*
spring.cloud.config.server.git.uri=file:absoluthe-path
spring.cloud.config.server.git.clone-on-start=true
spring.cloud.config.allowOverride=true

最后,按照命名约定servicename-profile在gitrepo中添加客户端服务属性。

加分

您可以考虑使用spring cloud boss,用于热重新加载配置,而不是重新启动服务来再次握手,请在here中了解更多信息。

相关问题