我愛Java系列之---【SpringBoot中常用的注解和兩種注入方式】


@EnableConfigurationProperties(DataSourceProperties.class) 來聲明要使用DataSourceProperties 這個類並初始化該類對象,該類不用放在IOC容器中,可以通過該注解直接使用。

 

2.@Component:一般寫在類上邊,通過該注解將當前類初始化到Spring的IOC容器中,其他類若想調用,直接用@Autowired去容器中拿。

 

3.@Confifiguration: 一般寫在類上邊,標明該類是一個配置類,被注解的類內部一般包含一個或多個被@Bean注解的方法。相當於把該類作為spring的xml配置文件中的 <beans></beans> 。

 

4.@Bean注解的方法,這些方法將會被spring進行掃描,並初始化到Spring容器,bean的id為方法名。@Bean注解主要用在@Confifiguration注解的類里,也可以用在@Component注解的類里。

 

5.@ConfifigurationProperties:注解聲明當前類為屬性讀取類,這個注解並不會初始化該類對象到IOC中,prefix="jdbc" 讀取配置文件中(properties或yml),前綴為jdbc的值。

*****************************************************************************

常見的兩種注入方式:

  第一種注入方式:如果我們需要將配置文件的數據庫連接參數,讀取到java對象中,可以用@Component@ConfifigurationProperties注解實現。

    1)新建application.properties   

jdbc.driverClassName=com.mysql.jdbc.Driver 
jdbc.url=jdbc:mysql://127.0.0.1:3306/springboot
jdbc.username=root
jdbc.password=123456

    2)新建一個類,用來進行屬性綁定並注入:

/*** @ConfigurationProperties 注解聲明當前類為屬性讀取類 * @Component 注解將當前類JdbcProperties初始化到IOC中 */ 
@Component
@ConfigurationProperties(prefix = "jdbc")
public class JdbcProperties {
private String url;
private String driverClassName;
//此處省略get和set方法,及部分屬性

    3)JdbcProperties已被初始化到IOC中,我們就可以通過spring的bean注入使用了

  第二種注入方式:這里仍然以配置數據庫為例,使用@ConfifigurationProperties@EnableConfifigurationProperties完成。

    1)導入數據源maven坐標

<dependency> 
    <groupId>com.alibaba</groupId> 
    <artifactId>druid</artifactId>
     <version>1.1.6</version>
</dependency>

    2)新建一個類,用來進行屬性注入:

@ConfigurationProperties(prefix = "jdbc") 
public class DataSourceProperties{
    private String url; 
    private String driverClassName;
    private String username; 
    private String password;
     // ... 略 // getters 和 setters
 }
     3)在DataSourceConfifig中使用這個DataSourceProperties屬性讀取類對象:
@Configuration  //標明該類是一個配置類

@EnableConfigurationProperties(DataSourceProperties.class)//直接聲明要使用DataSourceProperties類,來讀取配置文件
public class DataSourceConfig {
    @Bean
    public DataSource dataSource(DataSourceProperties properties){
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setUsername(properties.getUsername());
       druidDataSource.setDriverClassName(properties.getDriverClassName());
        druidDataSource.setUrl(properties.getUrl());
        druidDataSource.setPassword(properties.getPassword());
        return druidDataSource;
}
}

    4)測試結果:

注意:import javax.sql.DataSource;

 

總結:
方式1: @Component@ConfifigurationProperties,@Autowired注解實現。
方式2: @ConfifigurationProperties + @EnableConfifigurationProperties注解實現。

 

 


免責聲明!

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



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