赞
踩
第一种:注意在配置类上加@Configration,使用@Value分别对单个属性进行注入。(如果不是默认的application.yml或者application.properties还需要加@Properties来制定配置文件)
@Configuration @PropertySource("classpath:jdbc.properties")//classpath(类路径)是指src文件夹下,否则是file路径,可以参看字母哥的配置文件加载顺序 public class JdbcConfigration { //value将string和基本类型注入 @Value("${jdbc.driverClassName}") private String driverClassName; @Value("${jdbc.url}") private String url; @Value("${jdbc.username}") private String username; @Value("${jdbc.password}") private String password; @Bean//把方法的返回值注入到spring容器 public DataSource Datasource() { DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName(this.driverClassName);//用this以区分局部和全局,这里是全局所以用this dataSource.setUrl(this.url); dataSource.setUsername(this.username); dataSource.setPassword(this.password); return dataSource; } }
对应的jdbc.properties是
jdbc.driverClassName = com.mysql.cj.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/pinshaoshao?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true&serverTimezone=GMT%2B8&
jdbc.username = root
jdbc.password = root
第二种,写了一个配置属性的对象类JdbcProperties,
@Configuration @ConfigurationProperties(prefix = "jdbc")//使用此注解必须要get,set方法和@Component或者其子类(如@Configration,@Service...) public class JdbcProperties { private String driverClassName; private String url; private String username; private String password; 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; } }
又写了一个JdbcConfiguration用来写你的方法,使用的时候将上面这个类注入
(springboot将这个类注入有四种方式):
1、@Autowired注入(注意这种方法要在JdbcConfiguration上加上@EnableConfigurationProperties(JdbcProperties.class),来启用配置属性的对象类JdbcProperties)
//@PropertySource("classpath:jdbc.properties")//classpath(类路径)是指src文件夹下,否则是file路径,可以参看字母哥的配置文件加载顺序 @Configuration//声明一个类是java配置类,相当于一个xml配置文件 //@EnableConfigurationProperties(JdbcProperties.class) public class JdbcConfigration { //方式一autowired注入 @Autowired private JdbcProperties jdbcProperties; @Bean//把方法的返回值注入到spring容器 public DataSource Datasource() { DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName(this.jdbcProperties.getDriverClassName());//用this以区分局部和全局,这里是全局所以用this dataSource.setUrl(this.jdbcProperties.getUrl()); dataSource.setUsername(this.jdbcProperties.getUsername()); dataSource.setPassword(this.jdbcProperties.getPassword()); return dataSource; } }
2、和第一种差不多。不过换成构造方法注入(注意此种方法也不能少了@EnableConfigurationProperties(JdbcProperties.class),因为这个注解在这里是将JdbcProperties交给ioc当作bean了,不加的话没有这个bean,注入都会失败)
//@PropertySource("classpath:jdbc.properties")//classpath(类路径)是指src文件夹下,否则是file路径,可以参看字母哥的配置文件加载顺序 @Configuration//声明一个类是java配置类,相当于一个xml配置文件 @EnableConfigurationProperties(JdbcProperties.class) public class JdbcConfigration { private JdbcProperties jdbcProperties; //方式二构造方法注入 public JdbcConfigration(JdbcProperties jdbcProperties) { this.jdbcProperties = jdbcProperties; } @Bean//把方法的返回值注入到spring容器 public DataSource Datasource() { DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName(this.jdbcProperties.getDriverClassName());//用this以区分局部和全局,这里是全局所以用this dataSource.setUrl(this.jdbcProperties.getUrl()); dataSource.setUsername(this.jdbcProperties.getUsername()); dataSource.setPassword(this.jdbcProperties.getPassword()); return dataSource; } }
3、和第一种差不多。不过换成@Bean那个方法的形参注入
//@PropertySource("classpath:jdbc.properties")//classpath(类路径)是指src文件夹下,否则是file路径,可以参看字母哥的配置文件加载顺序 @Configuration//声明一个类是java配置类,相当于一个xml配置文件 @EnableConfigurationProperties(JdbcProperties.class) public class JdbcConfigration { @Bean//把方法的返回值注入到spring容器 public DataSource Datasource(JdbcProperties jdbcProperties) { DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName(jdbcProperties.getDriverClassName());//用this以区分局部和全局,这里是全局所以用this dataSource.setUrl(jdbcProperties.getUrl()); dataSource.setUsername(jdbcProperties.getUsername()); dataSource.setPassword(jdbcProperties.getPassword()); return dataSource; } }
4、这种最优雅简洁,我们把JdbcProperties这个类不要了,然后直接在方法上加JdbcConfigration的类的@bean方法上@ConfigurationProperties注解
@Configuration//声明一个类是java配置类,相当于一个xml配置文件
public class JdbcConfigration {
//方法四(最优雅)也不要JdbcProperties类了,并且将上面的方法改成
@Bean
@ConfigurationProperties(prefix = "jdbc")//注意此时该方法的返回值的类对象一定要有set,get方法(如本例中的DataSource,是有getset方法的)
public DataSource Datasource() {
DruidDataSource dataSource = new DruidDataSource();
return dataSource;
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。