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

Spring忽略@primary注释

刁英朗
2023-03-14
@Configuration(proxyBeanMethods = false)
public class RedisHttpSessionConfiguration extends SpringHttpSessionConfiguration
        implements BeanClassLoaderAware, EmbeddedValueResolverAware, ImportAware {
    // ...

    @Bean
    public RedisIndexedSessionRepository sessionRepository() {
        // constructs and returns sessionRepository
    }

    // ...

    @EnableScheduling
    @Configuration(proxyBeanMethods = false)
    class SessionCleanupConfiguration implements SchedulingConfigurer {

        private final RedisIndexedSessionRepository sessionRepository;

        SessionCleanupConfiguration(RedisIndexedSessionRepository sessionRepository) {
            this.sessionRepository = sessionRepository;
        }

        // ...
    }
}
@EnableRedisHttpSession
@Configuration
public class CustomRedisHttpSessionConfiguration extends RedisHttpSessionConfiguration {
    // ...

    @Bean
    @Primary
    public RedisIndexedSessionRepository customSessionRepository() {
        RedisIndexedSessionRepository sessionRepository = super.sessionRepository();
        // custom config code
        return safeRepository;
    }

    // ...
}

有什么想法为什么@primary在这里没有被考虑在内吗?

共有1个答案

微生恩
2023-03-14

只需向配置中添加一个属性:

spring.main.allow-bean-definition-overriding=true

编辑

或者试试这样的方法:

@EnableRedisHttpSession
@Configuration
public class CustomRedisHttpSessionConfiguration extends 
    RedisHttpSessionConfiguration implements BeanPostProcessor {
    // ...

    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        if (bean.getClass() == RedisIndexedSessionRepository.class) {
            RedisIndexedSessionRepository sessionRepository = (RedisIndexedSessionRepository) bean;
            // custom config code
        }
        return bean;
    }

    // ...
}
 类似资料:
  • 问题内容: 我的@Transactionnal注释似乎被忽略了。我对Spring容器的初始化没有任何错误。看来我的方法尚未被Spring TX框架代理。在执行服务的方法期间,JDBCTemplate会引发预期的RuntimeException。问题在于JDBC连接没有回滚,并且更改保持不变。stacktrace没有显示应该包装我的服务方法的代理的任何迹象。 编辑:添加了控制器的代码 编辑2:添加了

  • 在我们的一个项目中,我们遇到了一个问题,Spring忽略了事务注释,然后失败了,出现了以下错误。 启动ApplicationContext时出错。要显示条件报告,请在启用“调试”的情况下重新运行应用程序。2018-09-13 15:05:18406错误[主]组织。springframework。靴子SpringApplication应用程序运行失败组织。springframework。道。Inva

  • 我正在迁移一个活动的Spring Web应用到Spring Boot(1.4.2)。 这些bean是在XML中定义的,因为它正在加载@重要资源。 我正在启动的4个bean是同一个对象BasicDataSource的实例。 为了告诉Spring要加载哪个,我为每个都设置了一个ID,并使用@Qualifer将正确的bean绑定到变量。 但Spring似乎忽略了我的@Qualifier,并抛出“没有可用

  • 我有一个具有依赖项的Spring Boot应用程序。我的实体类有一个带有列名的列注释。例如: 由此生成的SQL将创建为列名。在寻找解决方案之后,我发现解决了这个问题(列名取自列注释)。 但是,我的问题是为什么没有将naming_strategy设置为,JPA忽略列注释?也许冬眠方言与此有关?我正在连接到MS SQL 2014 Express,我的日志包含:

  • 我正在尝试配置Spring Security注释,我已经设法在xml中设置了Spring Security配置(由intercept-url元素配置),但是现在我想在我的beans中使用安全注释。但是当试图在没有记录的情况下访问安全控制器方法时,安全注释被完全忽略。这是我的控制器bean: 和登录控制器: 和配置:web.xml Spring-套筒.xml 和Spring安全.xml 如果需要,我

  • 我试图使用Jackson注释来重新命名序列化过程中产生的一些json标签。所有注释都编译得很好,当我运行时,除了所有Jackson注释之外,Jackson序列化工作完全被忽略。即使像@jsonignore或@jsonproperty这样的基本命令对json响应也没有影响。构建路径中的库有: 下面是我需要序列化的一个类的代码示例: