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

spring:使用@Configuration注释进行自动连线或“普通”调用?

司寇安宜
2023-03-14

我在spring 4.0.3配置中支持以下Java,它们有两个DataSource和JdbcTemplate bean:

@PropertySource("classpath:db.properties")
@Configuration
public class DBConfiguration {
.....
    @Autowired
    Environment env;

    @Bean
    public DataSource internalDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();

// init dataSource  setters for DATABASE_1

        return dataSource;
    }


    @Bean
    public DataSource publicDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();

// init dataSource  setters for DATABASE_2

        return dataSource;
    }
}

...@Bean public JdbcTemplate internalJDBCTemplate(){return new JdbcTemplate(internalDataSource());}

@Bean
public JdbcTemplate publicJDBCTemplate() {
    return new JdbcTemplate(publicDataSource());
}
___

我有其他配置bean类,它们自动连接第一个配置并调用internalDataSource()方法:

    @Import(DBConfiguration.class)
    @Configuration

 public class AuthConfiguration {

        @Autowired
        private DBConfiguration dbConfiguration;

        @Autowired
        private TokenStore tokenStore;

       @Bean
        public TokenStore tokenStore() {
            return new JdbcTokenStore(dbConfiguration.securityDataSource());
        }
...}

我假设,即使DBConfiguration被导入并自动连接到AuthConfiguration类中,每次初始化数据源时,DBConfiguration.SecurityDataSource()的每次html" target="_blank">调用都将导致新的DriverManagerDataSource()。

到底是不是科雷克特?

共有1个答案

徐瑞
2023-03-14

spring的默认bean作用域是singleton,因此数据源将只初始化一次。

当DI容器创建bean TokenStore时,它将获得一个由securityDataSource方法在DBConfiguration中定义的bean。但它不直接调用方法,而是从DI容器中获取一个bean实例。所有bean的初始化都是由spring对开发人员透明地完成的。

请注意,用@Configuration注释的类只是框架的定义,它们并不直接执行。

 类似资料:
  • 我仍然是Spring的新手,我正在尝试正确设置ehcache Spring注解。我使用的是Spring 3.2.3 ehCache 2.4和ehcache-spring-注解-1.2。 当我尝试访问对cacheManager的引用时,它总是空的。所有jar都在构建路径ehcache上。xml在类路径中,没有xml错误。我还尝试在组件扫描中包含类,并使用@Resource而不是自动连接。我卡住了!

  • 我对spring中的@Autowired注释有问题。我有一个RestController类: 接口: CategoryManagerImpl类: 每次编译代码时,我都会遇到一个异常: Bun当我创建ApplicationContext并尝试获取categoryManagerImpl bean时,没有问题: 有人知道哪里会有问题吗? 谢谢 添加了 配置类: 堆栈跟踪:

  • 和和注释之间有什么区别? 我们应该在什么时候使用它们每一个?

  • 我有一个Spring bean,在Spring Bean中我有一个对其他bean列表的依赖项。我的问题是:如何注入一个通用的bean列表作为该bean的依赖项? 例如,一些代码: 我的豆子: 问题是:;如何在Painter中获得颜色列表?另外,还有一点:我应该让@Configuration返回接口类型还是类? 谢谢你的帮助!

  • 我们正在尝试在Spring中为我们的rest api创建一个自定义注释。我是创建自定义注释的新手,我已经给出了下面的代码片段 Spring Boot应用程序-- RestController- 自定义注释-- 注解处理器 方法回调-- 我试图处理自定义注释在一个类中实现BeanPost处理器,但我有一个问题 Issue_1:回调被调用一次,但是我不能对 /service/v1/version应用编

  • 我不明白的是为什么人们说自我调用会破坏交易?只要调用方方法是事务性的,难道一切都不应该像预期的那样工作吗?我有什么遗漏吗?