zoukankan      html  css  js  c++  java
  • 关于spring boot 注入相关经验

    关于spring boot 注入相关经验


    这里是最近重新学习Spring boot关于注入相关的经验博客,特此记录一下:

    JdbcTemplate注入

    在学习java web的时候,有使用过一个叫jdbcTemplate的东西。所以下面这个代码极为熟悉:

    @Configuration
    public class Springconfig {
    
     @Bean
        public JdbcTemplate jdbcTemplate(){
            return new JdbcTemplate();
        }
    
    }
    

    首先要说几点就是,这个@Configuration是必须要写的,如果没有写,这个Bean是不生效的。

    我们创建了一个jdbcTemplate的单例,接下来是怎么注入的问题。

    我一开始写的代码是这样的。

    class xxx{
        @Autowired
        JdbcTemplate jdbc;
    }
    
    

    这里其实是错误的,因为他会自动注入Springboot里面的这个类,我问了一下我的师傅,他和我说:

    这是因为xxx这个类没有托管给Spring工厂,加一个@Component就OK了

    多数据源注入

    我最近弄cdc的时候需要用到多数据源,下面是注入时的一些小经验

    spring:
      datasource:
        dynamic:
          primary: target
          batch:
            driver-class-name: com.mysql.cj.jdbc.Driver
            jdbc-url: jdbc:mysql://localhost:3306/springbatch?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
            username: root
            password: 123
          origin:
            driver-class-name: com.mysql.cj.jdbc.Driver
            jdbc-url: jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&useSSL=false
            username: root
            password: 123
          target:
            driver-class-name: com.mysql.cj.jdbc.Driver
            jdbc-url: jdbc:mysql://localhost:3306/target_test?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&useSSL=false
            username: root
            password: 123
    
    

    创建一个config

    
    @Configuration
    public class DataSourceConfig {
    
        @Bean("batchDataSource")
        @ConfigurationProperties("spring.datasource.dynamic.batch")
        public DataSource batchDataSource(){
            return DataSourceBuilder.create().build();
        }
    
        @Bean("originSource")
        @ConfigurationProperties("spring.datasource.dynamic.origin")
        public DataSource originDataSource(){
            xxx
        }
    
    
        @Bean("targetSource")
        @ConfigurationProperties("spring.datasource.dynamic.target")
        @Primary
        public DataSource targetDataSource(){
           xxx
        }
    
    
    
    }
    

    说个重要的,当你的Bean后面写了名称的时候,如果想注入这个东西,你需要用到下面的代码

    // 第一种
    @Autowired
    @@Qualifier("batchDataSource") DataSource dataSource;
    
    
    //第二种
    
    method(@Qualifier("batchDataSource") DataSource dataSource){
    
    }
    

    总之@Qualifier这个注解一定要会

  • 相关阅读:
    C++异常第二篇---C++标准库异常类exception的使用
    C++异常(exception)第一篇--综合讲解
    libconfig第二篇----两个小例子
    libconfig第一篇———使用指南
    log4cxx第三篇----使用多个logger
    kafka第五篇
    kafka第四篇--快速入门(如何使用kafka)
    UVA 455(最小周期)
    UVA1584(环状序列)
    UVA1583(最小生成元)
  • 原文地址:https://www.cnblogs.com/adroitwolf/p/14439325.html
Copyright © 2011-2022 走看看