代码之家  ›  专栏  ›  技术社区  ›  Maciaz

2个概要文件,2个方法实现,1个通过Thymeleaf调用html文件。怎样

  •  2
  • Maciaz  · 技术社区  · 6 年前

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

    问题是,在更改之前,我通过 Thymeleaf 在html文件中,如下所示:

    <td class="text-center" id="hashrate" th:text="${@findAndDisplayDataService.formatHashrate(networkHashrate.hashrate)}">Sample hashrate</td>
    

    现在,该类的名称已更改为: FindAndDisplayDataServiceQuartz FindAndDisplayDataServiceSpringScheduler 相应于配置文件。我不再能够在html文件中调用该方法。我用一个接口包装了这两个类 FindAndDisplayDataService ,但我实际上无法在Thymeleaf中调用接口方法。

    2 回复  |  直到 6 年前
        1
  •  2
  •   Raja Anbazhagan    6 年前

    制作 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

        2
  •  2
  •   Martin Frey    6 年前

    您可以创建 UIService 作为一名代表 FindAndDisplayDataService 界面这样您就可以调用一个具体的bean引用。