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

属性注入

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


- `@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 = &quot;jdbc&quot;)
public DataSource dataSource() {
    DruidDataSource dataSource = new DruidDataSource();
    return dataSource;
}

}




@PropertySource("classpath:jdbc.properties")

加载自己写的 properties属性.
@Configuration
@PropertySource("classpath:jdbc.properties")
public class JdbcConfig {
@Value(&quot;${jdbc.url}&quot;)
String url;
@Value(&quot;${jdbc.driverClassName}&quot;)
String driverClassName;
@Value(&quot;${jdbc.username}&quot;)
String username;
@Value(&quot;${jdbc.password}&quot;)
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

评论区