Java 2个配置文件,2个方法实现,1个通过Thymeleaf调用html文件。怎样
我的应用程序中只有一个使用特定类及其方法的实现。我添加了另一个实现并打开了配置文件。添加第二个概要文件使我可以分别为每个概要文件实现该类,因为其中存在一些差异 问题是,在更改之前,我通过html文件中的Java 2个配置文件,2个方法实现,1个通过Thymeleaf调用html文件。怎样,java,spring,spring-boot,thymeleaf,spring-profiles,Java,Spring,Spring Boot,Thymeleaf,Spring Profiles,我的应用程序中只有一个使用特定类及其方法的实现。我添加了另一个实现并打开了配置文件。添加第二个概要文件使我可以分别为每个概要文件实现该类,因为其中存在一些差异 问题是,在更改之前,我通过html文件中的Thymeleaf调用了特定的方法,如下所示: <td class="text-center" id="hashrate" th:text="${@findAndDisplayDataService.formatHashrate(networkHashrate.hashrate)}">
Thymeleaf
调用了特定的方法,如下所示:
<td class="text-center" id="hashrate" th:text="${@findAndDisplayDataService.formatHashrate(networkHashrate.hashrate)}">Sample hashrate</td>
Sample hashrate
现在,该类的名称已更改为:
FindDisplayDataServiceQuartz
和FindDisplayDataServicesSpringScheduler
相应地配置文件。我不再能够在html文件中调用该方法。我用接口FindAndDisplayDataService
包装了这两个类,但我实际上无法在Thymeleaf中调用接口方法。您可以创建一个UIService
作为委托,在其中插入FindAndDisplayDataService
接口。通过这种方式,您可以调用一个具体的bean引用。使FindDisplayDataServiceQuartz
和FindDisplayDataServicesSpringScheduler
实现一个公共接口
,可能具有相同的bean
限定符,这样您就可以自动连线而不用担心bean名称。下面这样做就可以了
定义一个公共接口
public interface FindAndDisplayDataService {
void formatHashrate(String hashrate);
}
@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
}
}
创建扩展公共接口的特定于概要文件的bean定义
public interface FindAndDisplayDataService {
void formatHashrate(String hashrate);
}
@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
模板中,您可以基于@组件namefindAndDisplayDataService
注入任何bean