2 个配置文件、2 个方法实现、1 个通过 Thymeleaf 在 html 文件中调用。如何?
2 profiles, 2 method implementations, 1 call in html file via Thymeleaf. How?
我的应用程序中只有 1 个使用特定 class 及其方法的实现。我添加了另一个实现并打开了配置文件。添加第二个配置文件让我分别为每个配置文件实现 class,因为存在一些差异。
问题是,在更改之前,我通过 html 文件中的 Thymeleaf
调用了特定方法,如下所示:
<td class="text-center" id="hashrate" th:text="${@findAndDisplayDataService.formatHashrate(networkHashrate.hashrate)}">Sample hashrate</td>
现在 class 的名称已更改为:
FindAndDisplayDataServiceQuartz
和 FindAndDisplayDataServiceSpringScheduler
根据配置文件。我无法再调用 html 文件中的方法。我已经用接口 FindAndDisplayDataService
包装了两个 classes,但我真的无法在 Thymeleaf 中调用接口方法。
您可以创建一个 UIService
作为委托,在其中注入您的 FindAndDisplayDataService
接口。这样您就可以调用具体的 bean 引用。
使 FindAndDisplayDataServiceQuartz
和 FindAndDisplayDataServiceSpringScheduler
实现一个通用的 interface
,可能具有相同的 bean
限定符,这样您就可以自动装配而不必担心 bean 名称。像下面这样的东西就可以了。
定义一个公共接口。
public interface FindAndDisplayDataService {
void formatHashrate(String hashrate);
}
创建扩展公共接口的配置文件特定 bean 定义。
@Component("findAndDisplayDataService")
@Profile("quartz")
public FindAndDisplayDataServiceQuartz implements FindAndDisplayDataService {
public void formatHashrate(String hashrate){
//do stuff based on quartz
}
}
@Component("findAndDisplayDataService")
@Profile("spring-scheduler")
public FindAndDisplayDataServiceSpringScheduler implements FindAndDisplayDataService {
public void formatHashrate(String hashrate){
//do stuff based on Spring scheduler
}
}
并且在您的 thymeleaf
模板中,您可以根据 @Component
名称 findAndDisplayDataService
.
注入任何 bean
我的应用程序中只有 1 个使用特定 class 及其方法的实现。我添加了另一个实现并打开了配置文件。添加第二个配置文件让我分别为每个配置文件实现 class,因为存在一些差异。
问题是,在更改之前,我通过 html 文件中的 Thymeleaf
调用了特定方法,如下所示:
<td class="text-center" id="hashrate" th:text="${@findAndDisplayDataService.formatHashrate(networkHashrate.hashrate)}">Sample hashrate</td>
现在 class 的名称已更改为:
FindAndDisplayDataServiceQuartz
和 FindAndDisplayDataServiceSpringScheduler
根据配置文件。我无法再调用 html 文件中的方法。我已经用接口 FindAndDisplayDataService
包装了两个 classes,但我真的无法在 Thymeleaf 中调用接口方法。
您可以创建一个 UIService
作为委托,在其中注入您的 FindAndDisplayDataService
接口。这样您就可以调用具体的 bean 引用。
使 FindAndDisplayDataServiceQuartz
和 FindAndDisplayDataServiceSpringScheduler
实现一个通用的 interface
,可能具有相同的 bean
限定符,这样您就可以自动装配而不必担心 bean 名称。像下面这样的东西就可以了。
定义一个公共接口。
public interface FindAndDisplayDataService {
void formatHashrate(String hashrate);
}
创建扩展公共接口的配置文件特定 bean 定义。
@Component("findAndDisplayDataService")
@Profile("quartz")
public FindAndDisplayDataServiceQuartz implements FindAndDisplayDataService {
public void formatHashrate(String hashrate){
//do stuff based on quartz
}
}
@Component("findAndDisplayDataService")
@Profile("spring-scheduler")
public FindAndDisplayDataServiceSpringScheduler implements FindAndDisplayDataService {
public void formatHashrate(String hashrate){
//do stuff based on Spring scheduler
}
}
并且在您的 thymeleaf
模板中,您可以根据 @Component
名称 findAndDisplayDataService
.