如何让一个@Configuration注解的bean早于内部@Bean注解的bean被初始化?

我想要让 @Value注解的port能被factory.setPort(port)用到,但是我发现spring会先初始化JedisConnectionFactory,然后再初始化MyConfig,这就导致JedisConnectionFactory初始化时,port还没有被注入,然后值为0,有什么办法解决?其中一种方法是让@Configuration注解的bean早于内部@Bean注解的bean被初始化,怎么做呢?

@Configuration
class MyConfig{
    @Value("${spring.redis.port}")
    private int port;
    
    @Bean 
    JedisConnectionFactory getMybatisJedisConnectionFactory() {
    ...
    factory.setPort(port)
    ...
}
    
阅读 4.1k
5 个回答

不是可以指定扫描包路径吗

我在spring boot 1.5.15里试了一下,没有遇到你说的问题,port有被赋值。

你找找是不是其它原因,实在不行,试试@Order, @DependsOn之类的。

可以在方法getMybatisJedisConnectionFactory中加个参数,在这个参数代表的Bean中注入spring.redis.port的值

新手上路,请多包涵

在下面方法中加参数@Value("${spring.redis.port}")int port

利用@Ordered注解

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题