如何在Spring Boot中将属性设置为通用@Service类?

时间:2019-01-17 20:48:58

标签: java spring-boot design-patterns

我是Spring Boot的新手,所以在这里提出我的基本问题。

我想构建一个通用的@Service类,该类具有定义明确的方法,甚至不需要覆盖。

此类唯一需要做的就是根据调用的Controller方法来调整其属性。基本上,此类用作Job处理程序,需要调整一些参数,以便其方法可以执行应计算的内容。作业将始终具有相同的工作流,并以相同的顺序调用方法,但是它将获得不同的结果,具体取决于接收到的参数/属性,正如我之前所说,这些参数/属性是由控制器方法定义的。

除调整作业的工作流程以外,它唯一具有的属性是自动连接的@Repository对象,该对象会将作业的结果保存在数据库中。

也许我可以简单地实例化一个Job Handler对象,并使用该工作所需的参数调用构造函数,但是考虑到Spring如何与依赖项注入一起工作,我不知道这样做的“ Spring方式”是什么。我需要一个@Repository对象嵌入到作业处理程序服务中。

如果有人可以编写示例代码/示例,我将不胜感激,因为我可以理解如何使用Spring Boot做到这一点,因此不必重复代码或服务类。

1 个答案:

答案 0 :(得分:0)

这种情况的春季方法是创建JobHandler的Bean,在其中注入必要的依赖项,例如存储库:

@Configuration
class MyConfiguration {

    @Bean
    MyJobHandler myJobHandler(MyRepository myRepository) {
        return new MyJobHandler (myrepository);
    }

}

或者,如果您不需要配置类,则可以将JobHandler声明为Component并将存储库注入构造函数中:

@Component
class MyJobHandler {

    private MyRepository myRepository;

    public MyJobHandler myJobHandler(MyRepository myRepository) {
        this.myRepository = myRepository;
    }

}