.
├── application
│ ├── pom.xml
│ └── src
│ ├── main
│ │ ├── kotlin
│ │ │ └── com
│ │ │ └── application
│ │ │ ├── ApplicationService.kt
│ │ │ └── Application.kt
│ │ └── resources
│ │ └── application.properties
│ └── test
│ └── kotlin
│ └── com
│ └── application
│ └── ApplicationServiceTest.kt
├── library
│ ├── pom.xml
│ └── src
│ └── main
│ ├── kotlin
│ │ └── com
│ │ └── application
│ │ ├── LibraryService.kt
│ │ └── Properties.kt
│ └── resources
│ ├── META-INF
│ │ └── spring.factories
│ └── config
│ └── application.properties
└── pom.xml
库/.../properties.kt:
@ConfigurationProperties("properties")
class Properties {
lateinit var name: String
}
Library/.../LibraryService.kt:
@Service
@EnableConfigurationProperties(Properties::class)
class LibraryService(private val properties: Properties) {
fun name() = properties.name
}
图书馆/.../Spring。工厂:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.application.LibraryService
properties.name=library
@SpringBootApplication
class Application
fun main(args: Array<String>) {
runApplication<Application>(*args)
}
@Service
class ApplicationService(private val libraryService: LibraryService) {
fun call() = libraryService.name()
}
properties.name=application
我认为应用程序的
properties.name=application
重写库的
和
applicationService::Call
必须返回值application
,而不是库模块
中properties.name
中的默认值Library
。但这不会发生。ApplicationService::Call
返回值Library
。
我创建了简单的junit测试来重现这种行为(applicationServiceTest.kt):
@SpringBootTest
class ApplicationServiceTest {
@Autowired
lateinit var applicationService: ApplicationService
@Test
fun test() {
println(applicationService.call())
}
}
它打印
库
。我希望具有以下行为:库
具有一些已定义的默认属性,但我希望能够在应用程序
中重写其中一些属性。如何实现?
源代码:https://github.com/grolegor/maven-multi-module-spring-starter
形成文档
4.2.3.应用程序属性文件SpringApplication在以下位置从Application.properties文件中加载属性,并将其添加到Spring环境中:
1.当前目录的/config子目录
因此,在您的示例中,将使用[library]config/application.properties
,因为它的顺序比[application]application.properties
高。
此外,您不能使用application.properties
两次。
查看您的存储库,我建议您从库模块中删除/config/application.properties
,并在properties
-class中提供默认值
package com.application
import org.springframework.boot.context.properties.ConfigurationProperties
@ConfigurationProperties("properties")
class Properties {
var name: String = "library"
}
本文向大家介绍如何覆盖Spring Boot项目的默认属性?相关面试题,主要包含被问及如何覆盖Spring Boot项目的默认属性?时的应答技巧和注意事项,需要的朋友参考一下 这可以通过在application.properties文件中指定属性来完成。 例如,在Spring MVC应用程序中,您必须指定后缀和前缀。这可以通过在application.properties文件中输入下面提到的属性来
我有一个RESTAPI,我不想强迫客户端发送请求参数。我有将近400个api方法,我不想将所有参数设置为“required=false” 我想覆盖Spring RequestParam的默认行为。我想将RequestParam接口的“required”属性的默认值设置为“false”。 有什么方法可以覆盖它吗?如果我不能或这不是最佳实践,有什么方法可以解决上述问题。
我需要定制的工件安装,不知道如何覆盖默认的(从默认的maven生命周期)。所以我的问题是: 如何在我的pom.xml中配置maven install插件,使其不进行默认安装并执行我的自定义安装文件目标? 我尝试了没有id和默认安装id,但没有帮助。 更新:从提供的答案 - 这对我不起作用(我在日志中看到两次安装尝试)。
文件已经存在,您可以覆盖它 (“是”按钮),跳过 (“否”按钮),重命名,全部重命名 ,覆盖全部文件 (“全部皆是” 按钮),跳过全部已存在的文件 (“全部皆否”按钮) 或取消 当前的操作。 如果您选择了全部重命名 模式,重命名文件将得到象 'filename(N).txt' 的名字,'filename.txt' 的位置是原始的文件名, 'N' 是数字。
并且,对于不同的目标服务器,目标路径每次都将不同! 清洁/家居对我来说不是一个选择。不幸的是,这里的答案对我来说不是很清楚。
我有一个bean,它使用@value注释填充属性,如下所示 在我的应用程序上下文中,我有以下配置 当values.properties文件不存在时,默认值“none”会按预期设置,但是当属性文件存在时,默认值仍会使用,即使我收到一条日志消息,说明属性文件是从PropertyPlaceholderConfigurer加载的 只有当属性文件丢失和/或占位符不可解析时,我才需要默认值生效;不是一直都是。