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
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

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

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!