我有一个Web应用程序,并且我想使用Spring Boot中的Server Configuration。 这两个应用程序都位于本地主机上。我从头开始制作了前两个应用程序,并且它们可以一起工作,但是当我使用其中具有许多依赖项(不仅是cloud-config和web依赖项)的客户端时,它不再起作用。我怎么知道?我在服务器的属性文件中有一个变量,我尝试在客户端中使用 @Value(“ $ {atena}”) 并且出现错误 java.lang.IllegalArgumentException:无法解析值“ $ {atena}”中的占位符'atena'。
服务器的主类具有以下注释 @EnableConfigServer
在atena-config.yml中,我只有变量名:
atena: 'Hellllloooooo'
bootstrap.yml内容
server:
port: 9000
spring:
profiles:
active: native
和build.gradle依赖项:
dependencies {
implementation 'org.springframework.cloud:spring-cloud-config-server'
runtimeOnly 'org.springframework.boot:spring-boot-devtools'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
我确定服务器是正确的,我的客户端出了点问题。
-------------------->客户端
我有一个restcontroller:
@RestController
@RequestMapping("/songs")
public class SongController {
@Value("${atena}")
String variable;
@GetMapping(value="/check-from")
public String viewVariable(){
return variable;
}
}
我试图从服务器配置中获取变量。
来自客户端的bootstrap.yml
spring:
application:
name: atena-config
cloud:
config:
uri: http://localhost:9000
最后是来自客户端的build.gradle:
plugins {
id 'org.springframework.boot' version '2.1.3.RELEASE'
id 'java'
}
apply plugin: 'io.spring.dependency-management'
group = 'com'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
dependencies {
compile 'com.google.apis:google-api-services-youtube:v3-rev206-1.25.0'
implementation 'org.springframework.boot:spring-boot-starter'
implementation('org.apache.tomcat:tomcat-jdbc:9.0.10')
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation('org.mybatis:mybatis:3.4.6')
implementation('org.mybatis:mybatis-spring:1.3.2')
implementation('org.springframework.boot:spring-boot-starter-jdbc')
implementation('org.springframework.cloud:spring-cloud-starter-config')
compile group: 'org.postgresql', name: 'postgresql', version: '42.2.5'
runtimeOnly 'org.springframework.boot:spring-boot-devtools'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
我真的不知道会发生什么,我很确定这些依赖是问题所在,但是我还没有弄清楚哪一个,我不能排除其中的任何一个,因为我在项目中使用了它们。
答案 0 :(得分:0)
没关系。我已经解决了。确实,问题出在我的依赖项上,我的gradle.build出了问题。我用具有所有依赖项的spring初始化器创建了一个新项目,并从那里复制了新的gradle.build,现在可以正常工作了。
这是客户端的新build.gradle
plugins {
id 'org.springframework.boot' version '2.1.3.RELEASE'
id 'java'
}
apply plugin: 'io.spring.dependency-management'
group = 'com'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
maven { url 'https://repo.spring.io/milestone' }
}
ext {
set('springCloudVersion', 'Greenwich.RELEASE')
}
dependencies {
compile 'com.google.apis:google-api-services-youtube:v3-rev206-1.25.0'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.0.0'
implementation 'org.springframework.cloud:spring-cloud-starter-config'
runtimeOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'org.postgresql:postgresql'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}