springBoot的四種屬性注入


 

  一、Autowired注入方式(以注入連接池為例

         1. 創建一個屬性讀取類:JdbcProperties 

/**
 * 屬性讀取類
 *  prefix: 為application.properties文件中的前綴 
 */
@ConfigurationProperties(prefix = "jdbc")  //讀取配置文件,聲明一個類是讀取配置類
public class JdbcProperties {
    private String driverClassName;  //配置文件中的屬性名稱 private String url;
    private String username;
    private String password;
   
    //get、set方法
}

             *  在類上通過@ConfigurationProperties注解聲明當前類為屬性讀取類

             *  prefix="jdbc"讀取屬性文件中,前綴為jdbc的值。

             *  在類上定義各個屬性,名稱必須與屬性文件中jdbc.后面部分一致,並且必須具有getter和setter方法

             * SpringBoot默認會讀取文件名為application.properties的資源文件,所以配置文件名必須為application.properties

         2.創建另一個類JdbcConfiguration使用這個屬性

              *  通過@EnableConfigurationProperties(JdbcProperties.class)來聲明要使用JdbcProperties這個類的對象

              *  然后你可以通過以下方式在JdbcConfiguration類中注入JdbcProperties: 

                 1)  @Autowired注入                       

@Configuration //聲明一個類為Java配置類,相當於一個xml文件
@EnableConfigurationProperties(JdbcProperties.class)  //啟用屬性讀取類
public class JdbcConfiguration {
    @Autowired
    private JdbcProperties jdbcProperties;  //注入讀取類

    @Bean        //把方法返回值注入到spring容器
    public DataSource dataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(this.jdbcProperties.getDriverClassName());
        dataSource.setUrl(this.jdbcProperties.getUrl());
        dataSource.setUsername(this.jdbcProperties.getUsername());
        dataSource.setPassword(this.jdbcProperties.getPassword());
        return dataSource;
    }
}

              2)構造函數注入

          

@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfiguration {

    private JdbcProperties jdbcProperties;

    public JdbcConfiguration(JdbcProperties jdbcProperties){
        this.jdbcProperties = jdbcProperties;
    }

    @Bean
    public DataSource dataSource() {
        //
    }

}

           3)@Bean方法的參數注入          

@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfiguration {

    @Bean
    public DataSource dataSource(JdbcProperties jdbcProperties) {
        // ...
    }
}

           4)@ConfigurationProperties(prefix = "jdbc")聲明在需要使用的@Bean的方法上,然后SpringBoot就會自動調用這個Bean(此處是DataSource)的set方法,然后完成注入。

               使用的前提是:該類必須有對應屬性的set方法!

               

@Configuration
public class JdbcConfiguration {
    
    @Bean
    // 聲明要注入的屬性前綴,SpringBoot會自動把相關屬性通過set方法注入到DataSource中
    @ConfigurationProperties(prefix = "jdbc")
    public DataSource dataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        return dataSource;
    }
}

 

 

 

 

 

                


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM