我有一个spring-boot应用程序。我想我需要覆盖bean属性,因为我想在应用程序启动之前创建计算属性。 在我的YAML配置文件
中$(document).ready(function(){
$("#workshop1").change(function(){
$("#workshop2 option").each(function(){
if ($(this)["0"].value) {
$(this).removeAttr("disabled");
}
});
$("select[name=workshop2] option[value=" + $("select[name=workshop1]").val() + "]").attr("disabled", "disabled");
});
$("#workshop2").change(function(){
$("#workshop1 option").each(function(){
if ($(this)["0"].value) {
$(this).removeAttr("disabled");
}
});
$("select[name=workshop1] option[value=" + $("select[name=workshop2]").val() + "]").attr("disabled", "disabled");
});
});
但是,在启动应用程序 server.port 属性后,值 123 但我不想要此值,我想要 myport 值用特殊方法计算。
我试着写bean(如下所示),但它也不起作用。它应设置为9999,而不是123。
#this property needs to be calculated
myport:
port: 123
server:
port: ${myport.port}
答案 0 :(得分:0)
如果要更改服务器的端口,则需要在服务器启动之前提供该属性。
将您的application.yml更改为:
server:
port: ${myport}
您使用成绩,因此您可以通过processResources任务提供属性,如下所示:
task calculateServerPort {
// calculate your port here
// if you really need business logic in Java for calculation, you could use the javaExec task in here
project.ext.myport = 8007 // make it available as project.property here
}
processResources {
dependsOn(calculateServerPort)
expand project.properties
}
bootRun {
addResources = false
}
请注意,将addResources
的{{1}}属性设置为bootRun
会导致从项目的静态构建目录加载资源。但无论如何,必须使资源处理能够用于Spring-Boot。
如果您需要有关如何捕获Java任务结果(与javaExec一起使用)的更多信息,您可能会发现它here。
如果您需要Java中的业务逻辑来计算您的端口(以及最重量级的端口),那么最后一个选项当然是提供自定义等级插件。