我正在构建 thymeleaf 模板,我必须向它传递一些带有参数的字符串,例如The value equals %s. 问题是消息可以是任意的,所以我不能只在我的thymeleaf.properties.
我尝试过这样的事情
<td th:text="#{(${myObject.stringFormatMessage})(${myObject.param})}"></td>
Run Code Online (Sandbox Code Playgroud)
但最终结果是??The value equals %s_eng_ENG??. 我也改了%s但是{0}结果几乎是一样的。在传递到我的模板之前我无法解析该字符串,因为myObject.param它必须是粗体/彩色的。有什么方法可以做到这一点 - 传递 String.format 而不是在 my 中设置外部化文本.properties?
我有一个休息端点,根据Enum值,我调用特定服务的方法。所有服务都在同一抽象类之后扩展。
public abstract class BaseService{
someMethod()
}
Run Code Online (Sandbox Code Playgroud)
public class ServiceA extends BaseService{
@Override
someMethod()
}
Run Code Online (Sandbox Code Playgroud)
public class ServiceB extends BaseService{
@Override
someMethod()
}
Run Code Online (Sandbox Code Playgroud)
public class RestEndpoint {
@Inject
ServiceA serviceA
@Inject
ServiceB serviceB
public void someEndpoint(Enum value){
switch (value){
case 1:
serviceA.someMethod();
case 2:
serviceB.someMethod();
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,可能会有更多的服务,我想知道是否有更好的方法。我考虑过实施战略模式,但是我不知道这是否不是“大材小用”,因为最多会有约10/15的服务。
编辑
因此,因为我的服务是bean,并且在其中注入了其他bean,所以没有任何“简便”的方法来重构它-我无法在Enum类中创建某个方法,例如,return new ServiceA()因为那样,我ServiceA实例中的bean 就不会注射。我可以尝试获取上下文并设置特定的bean,但是这样做并不安全(例如,您可以尝试注入非bean,而编译器不会让您知道它)。
因此,如果我的BaseService实现不使用其他bean,最简单的方法是在Enum类中创建方法
public abstract BaseService getService();
Run Code Online (Sandbox Code Playgroud)
并像这样实现
anyServiceA{
@Override
public BaseService getService(){
return new ServiceA();
}
}
Run Code Online (Sandbox Code Playgroud)
在休息服务中,只需致电 value.getService().someMethod();
也许会帮助某人。
我正在大学从事一个小项目,我想知道是否可以使用 git/github 同步两个 docker 容器。我们在数据库上成对工作,每个人都有一个在 docker 上运行的数据库(两者都具有相同的设置,由相同的 docker-compose 文件启动)。我们需要用相同的数据填充两个数据库,如果我们可以单独工作并使用 git 或类似的东西同步我们的数据库,那么会更容易。我知道用数据创建一些 sql 脚本会更好/更容易,但我只是好奇。我考虑过将卷文件复制到 git,并创建一些简单的脚本,从存储库中提取卷并将其复制到现有数据库的卷。