lsong98cn 2019-08-03 17:21 采纳率: 0%
浏览 350

关于按需进行 springboot 的自动装配

希望能实现如下的功能:

在 springboot 启动前,先通过读取 application.properties 文件
判断是否已经配置 redis, 数据库等设定。

如果没有设定,自动进入安全模式,只自动装配 springmvc, 以及 config 下的 controller。这样用户可以通过前台页面,设定参数。

如果已经设定,则进入生产模式。全部装配。

同时也可以通过命令行, 或者 -Dspring.profiles.active=safemode 来进入安全模式。

目前的代码已经实现,但是感觉不够好。有没有更好的实现方式。

目前的代码如下:
启动类:

public class SbApplication {

    public static void main(String[] args) throws Exception {
        String profile = System.getProperty("spring.profiles.active");
        if(profile == null) {
            profile = judgeProfile();
            System.setProperty("spring.profiles.active", profile);
        }
        if("Safe".equals(profile)) {
            SbApplicationSafe.start();
        }else if("Normal").equals(profile)){
            SbApplicationNormal.start();
        }
    }
}

安全模式类:

@EnableJpaRepositories
@SpringBootApplication(exclude = { 
        RedisAutoConfiguration.class, 
        RedisRepositoriesAutoConfiguration.class,
        DataSourceAutoConfiguration.class, 
        DataSourceTransactionManagerAutoConfiguration.class,
        HibernateJpaAutoConfiguration.class, 
        QuartzAutoConfiguration.class, 
        TaskSchedulingAutoConfiguration.class,
        SecurityAutoConfiguration.class })
@Conditional(SbApplicationSafe.class)
public class SbApplicationSafe implements Condition {

    public static void start() {
        SpringApplication.run(SbApplicationSafe.class);

    }

    @Override
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
        return "Safe".equals(System.getProperty("spring.profiles.active"));
    }

}

正常模式类:

@SpringBootApplication
@EnableJpaRepositories
@Conditional(SbApplicationCluster.class)
public class SbApplicationCluster implements Condition {

    public static void start() {
        SpringApplication.run(SbApplicationCluster.class);
    }

    @Override
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
        return "Cluster".equals(System.getProperty("spring.profiles.active"));
    }

}
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-10-25 19:29
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog