侧边栏壁纸
  • 累计撰写 793 篇文章
  • 累计创建 1 个标签
  • 累计收到 1 条评论
标签搜索

目 录CONTENT

文章目录

属性注入

Dettan
2021-04-10 / 0 评论 / 0 点赞 / 168 阅读 / 366 字
温馨提示:
本文最后更新于 2022-07-23,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。


- `@Configuration`:声明一个类作为配置类,代替xml文件
- `@Bean`:声明在方法上,将方法的返回值加入Bean容器,代替`<bean>`标签
- `@value`:属性注入,只能注入基本类型
- `@PropertySource`:指定外部属性文件,
@AutoWired 注入

构造函数注入

3.4、更优雅的注入
@ConfigurationProperties(prefix = "jdbc")
事实上,如果一段属性只有一个Bean需要使用,我们无需将其注入到一个类(JdbcProperties)中。而是直接在需要的地方声明即可:
@Configuration
public class JdbcConfig {
    
    @Bean
    // 声明要注入的属性前缀,SpringBoot会自动把相关属性通过set方法注入到DataSource中
    @ConfigurationProperties(prefix = "jdbc")
    public DataSource dataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        return dataSource;
    }
}
@PropertySource("classpath:jdbc.properties")
加载自己写的 properties属性.
@Configuration
@PropertySource("classpath:jdbc.properties")
public class JdbcConfig {

    @Value("${jdbc.url}")
    String url;
    @Value("${jdbc.driverClassName}")
    String driverClassName;
    @Value("${jdbc.username}")
    String username;
    @Value("${jdbc.password}")
    String password;

    @Bean
    public DataSource dataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setUrl(url);
        dataSource.setDriverClassName(driverClassName);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }
}

@ConfigurationProperties(prefix = "jdbc")
配置类 yaml
@ConfigurationProperties(prefix = "jdbc")
public class JdbcProperties {
    private String url; //这里读取 application.yam 里的jdbc.url
    private String driverClassName;
    private String username;
    private String password;
    // ... 略
    // getters 和 setters
}

@EnableConfigurationProperties(JdbcProperties.class)
加载配置类
@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfig {

    @Bean
    public DataSource dataSource(JdbcProperties jdbc) {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setUrl(jdbc.getUrl());
        dataSource.setDriverClassName(jdbc.getDriverClassName());
        dataSource.setUsername(jdbc.getUsername());
        dataSource.setPassword(jdbc.getPassword());
        return dataSource;
    }
}



0

评论区