Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 2个配置文件,2个方法实现,1个通过Thymeleaf调用html文件。怎样_Java_Spring_Spring Boot_Thymeleaf_Spring Profiles - Fatal编程技术网

Java 2个配置文件,2个方法实现,1个通过Thymeleaf调用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)}">

我的应用程序中只有一个使用特定类及其方法的实现。我添加了另一个实现并打开了配置文件。添加第二个概要文件使我可以分别为每个概要文件实现该类,因为其中存在一些差异

问题是,在更改之前,我通过html文件中的
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
模板中,您可以基于
@组件
name
findAndDisplayDataService
注入任何bean