小编Mik*_*din的帖子

如何在多个配置文件不活动时有条件地声明Bean?

在我的Spring-Boot-App中,我想有条件地声明一个Bean,这取决于(un)加载的spring-profiles.

条件:

Profile "a" NOT loaded  
AND  
Profile "b" NOT loaded 
Run Code Online (Sandbox Code Playgroud)

到目前为止我的解决方案(有效):

@Bean
@ConditionalOnExpression("#{!environment.getProperty('spring.profiles.active').contains('a') && !environment.getProperty('spring.profiles.active').contains('b')}")
    public MyBean myBean(){/*...*/}
Run Code Online (Sandbox Code Playgroud)

是否有更优雅(和更短)的方式来解释这种情况?
特别是我想在这里摆脱Spring Expression Language的使用.

spring spring-boot

25
推荐指数
4
解决办法
3万
查看次数

如何在不破坏自动配置的情况下自定义Spring-Boot中的MappingMongoConverter(setMapKeyDotReplacement)?

如何MappingMongoConverter在不更改由spring-data自动配置的任何mongo-stuff的情况下自定义Spring-Boot-Application(1.3.2.RELEASE)中的内容?

我目前的解决方案是:

@Configuration
public class MongoConfig {

  @Autowired
  private MongoDbFactory mongoFactory;

  @Autowired
  private MongoMappingContext mongoMappingContext;

  @Bean
  public MappingMongoConverter mongoConverter() throws Exception {
    DbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoFactory);
    MappingMongoConverter mongoConverter = new MappingMongoConverter(dbRefResolver, mongoMappingContext);
    //this is my customization
    mongoConverter.setMapKeyDotReplacement("_");
    mongoConverter.afterPropertiesSet();
    return mongoConverter;
  }
}
Run Code Online (Sandbox Code Playgroud)

这是正确的方式还是我打破了一些东西?
或者是否有更简单的方法来设置mapKeyDotReplacement?

spring-data spring-data-mongodb spring-boot

14
推荐指数
3
解决办法
6295
查看次数