当前位置: 首页 > 知识库问答 >
问题:

带有公用组件的自定义Spring Boot启动程序

范云
2023-03-14

我们运行了一些基于sames原则的Spring boot应用程序,例如:

  • 记录数据库中的事件。
  • 处理异常的常用方法(@controlleradvice)
  • 使用MDC显示日志
  • 及更多信息。

今天,我们使用Spring Boot父应用程序建立应用程序的基础。它的工作相当好,但似乎更好地使用Spring启动机机制。

    null
package net.mytest.boot.starter;

public interface Tooling {
    void log(String message);
}
package net.mytest.boot.starter;

// Is service is "allowed" inside a starter ?
@Service
public class ToolingImpl implements Tooling {
    Logger log = LoggerFactory.getLogger(Tooling.class);

    @Autowired
    RepositoryLog repositoryLog;

    public void log(String message) {
        log.debug("Logging in DB " + message);
        EntityLog entityLog  = new EntityLog(UUID.randomUUID().toString(), message);

        repositoryLog.save(eLog);
    }
}
package net.mytest.boot.starter;

@Configuration
@ComponentScan("net.mytest.boot.starter")
@EntityScan("net.mytest.boot.starter.db")
@EnableJpaRepositories
public class ToolingAutoConfiguration {

// If @Service is not used, this allows autowiring Tooling
//    @Bean
//    public Tooling toolingConfig() {
//        return new ToolingImpl();
//    }

}

如果我们只使用它来定义我们的启动配置,那么提供一些没有@bean或@service的AutoConfiguration类是否有意义?

仅限起动器配置

package net.mytest.boot.starter;

@Configuration
@ComponentScan("net.mytest.boot.starter")
@EntityScan("net.mytest.boot.starter.db")
@EnableJpaRepositories
public class ToolingAutoConfiguration {
}

共有1个答案

童华池
2023-03-14

学习如何使用自动配置创建启动程序的最好方法是检查正式的Spring Boot启动程序。例如,spring boot web Starter的自动配置。

你的大多数问题都是基于意见的,而且真的没有正确的答案。我将提供我的意见基于我的经验实现自动配置。

在starter依赖项中定义一些@controller或@service可以吗?

 类似资料:
  • 当尝试运行或调试带有applicationIdSuffix(.debug)的自定义BuildType时,手机上安装了应用程序,但正确的活动实际上并没有启动。实际上,启动了具有原始包名的活动(示例:在应该启动com.fobbymaster.app.debug时启动了com.fobbymaster.app)。 我在想,有一些配置需要修改,但我似乎找不到。 有什么想法吗? 设备SHELL命令:pm in

  • 我尝试用自定义控制器制作一个自定义组件。自定义组件已经显示在应用程序上,但我未能向其添加属性。 项目结构: null 布尔马尔科 完全错误: 原因:java.lang.nullPointerException:无法调用“javafx.scene.image.imageeview.setimage(javafx.scene.image.image)”,因为“controller.topbarbtn.

  • 我有一个自定义组件,它只是谷歌位置自动完成的包装。有时地址比输入框长,所以我实现了一个显示完整地址的工具提示。问题是,如果我在同一页面上有两个组件,并且我将鼠标悬停在其中一个输入框上,两个工具提示都会启动,因为页面上还有另一个组件。我怎么能只启动悬停的工具提示,而不启动其他所有工具提示? 我的组件如下所示: 实现两个组件的表单如下所示: 这是其中一个地址字段上的工具提示屏幕截图。正如您所看到的,底

  • 我为SonarQube创建了一个分析F#代码的自定义插件。这个插件的功能如预期,其结果可以在SonarQube UI中看到。 我现在正试图通过将一个解决方案绑定到我的SonarQube实例中包含的解决方案,将SonarLint与Visual Studio一起使用。但是,在Visual Studio中通过SonarLint分析代码时,不会使用F#规则。 在Visual Studio中让这个自定义的F

  • Mpx中的自定义组件完全基于小程序原生的自定义组件支持,与此同时,Mpx提供的数据响应和模板增强等一系列增强能力都能在自定义组件中使用。 原生自定义组件的规范详情查看这里 动态组件 Mpx中提供了使用方法类似于 Vue 的动态组件能力,这是一个基于 wx:if 实现的语法。通过对 is 属性进行动态绑定,可以实现在同一个挂载点切换多个组件,前提需要动态切换的组件已经在全局或者组件中完成注册。 使用

  • PyQt5有丰富的组件,但是肯定满足不了所有开发者的所有需求,PyQt5只提供了基本的组件,像按钮,文本,滑块等。如果你还需要其他的模块,应该尝试自己去自定义一些。 自定义组件使用绘画工具创建,有两个基本方式:根据已有的创建或改进;通过自己绘图创建。 Burning widget 这个组件我们会在Nero,K3B,或者其他CD/DVD烧录软件中见到。 #!/usr/bin/python3 # -*