【SpringBoot】SpringBoot属性注入的四种方式

什么是属性注入?

属性注入就是在实例化对象时,同时向对象中的属性进行相应的赋值,就是给类中的属性赋值。

第一步

在Resoures下面创建配置文件application.properties
写入jdbc代码:

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc://127.0.0.1:3306/leyou
jdbc.username=root
jdbc.password=123

如何区分不同配置?
通过前缀,prefix=“jdbc”,第二步会用到。

第二步

配置类(JdbcProperties)定义相关属性,使用 get、set方法定义。
注意:字段名和applicaiton.properties保持一致

@ConfigurationProperties(prefix = "jdbc")  //读取application.properties中的jdbc相关配置
public class JdbcProperties {

    public String getDriverClassName() {
        return driverClassName;
    }

    public void setDriverClassName(String driverClassName) {
        this.driverClassName = driverClassName;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    private String driverClassName;
    private String url;
    private String username;
    private String password;
}

第三步

开始注入
四种属性注入:

1、@Autowired注入 (最常用)

@Configuration  //声明一个类是一个java配置类,相当于一个xml配置文件
@EnableConfigurationProperties(JdbcProperties.class)  //启用JdbcProperties配置文件
public class JdbcConfiguration {

    @Autowired
    private JdbcProperties jdbcProperties;

    @Bean  //把方法的返回值注入到容器
    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  //声明一个类是一个java配置类,相当于一个xml配置文件
@EnableConfigurationProperties(JdbcProperties.class)  //启用JdbcProperties配置文件
public class JdbcConfiguration {

    @Autowired
    private JdbcProperties jdbcProperties;

    public JdbcConfiguration(JdbcProperties jdbcProperties){
        this.jdbcProperties=jdbcProperties;
    }
    @Bean  //把方法的返回值注入到容器
    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;
    }
}

3、@Bean方法形参注入

@Configuration  //声明一个类是一个java配置类,相当于一个xml配置文件
@EnableConfigurationProperties(JdbcProperties.class)  //启用JdbcProperties配置文件
public class JdbcConfiguration {

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

4、直接在@Bean方法上使用@ConfigurationProperties(prefix=“jdbc”) (最优雅的方式)

@Configuration  //声明一个类是一个java配置类,相当于一个xml配置文件
@EnableConfigurationProperties(JdbcProperties.class)  //启用JdbcProperties配置文件
public class JdbcConfiguration {

    @Bean  //把方法的返回值注入到容器
    @ConfigurationProperties(prefix = "jdbc")  //读取application.properties中的jdbc相关配置
    public DataSource dataSource(){
        DruidDataSource dataSource=new DruidDataSource();
        return dataSource;
    }
}

总结

最常用的还是第一种注入方式,更符合我们平时的玩法。虽然第四种方式很优雅,但是它要保证配置有相应的set方法,所以他还是有一定局限性的。

发布了150 篇原创文章 · 获赞 94 · 访问量 6万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章