@PropertySource
作用
用于指定properties
文件的位置
属性
value
:指定文件的名称和路径
关键字:classpath
,表示类路径下
@PropertySource("classpath:jdbcConfig.properties")
value
取值
properties
有包就写包名/文件名,没有就直接写文件名
例如:
cn/luis/jdbcConfig.properties
jdbcConfig.properties
@Value
配合spel
表达式取出配置文件中的值
@Value("${jdbc.driver}")
private String driver;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.user}")
private String username;
@Value("${jdbc.password}")
private String password;
代码演示:
主配置文件
@Configuration
@ComponentScan("cn.luis")
@Import(JdbcConfig.class)
@PropertySource("classpath:jdbcConfig.properties")
public class SpringConfiguration {
}
JdbcConfig
package config;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.apache.commons.dbutils.QueryRunner;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;
import javax.sql.DataSource;
import java.beans.PropertyVetoException;
/**
* @ClassName JdbcConfig
* @Description 和spring连接数据库相关的配置类
* @Author L
* @Date 2020.04.02 23:00
* @Version 1.0
* @Remark TODO
**/
@Configuration
public class JdbcConfig {
/**
* spel表达式
*/
@Value("${jdbc.driver}")
private String driver;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.user}")
private String username;
@Value("${jdbc.password}")
private String password;
/**
* 用于创建一个QueryRunner对象
* 注入数据源 :构造函数注入 ref:构造函数的参数
* @param dataSource
* @return
*/
@Bean(name="runner")
@Scope("prototype")
public QueryRunner createQueryRunner(DataSource dataSource){
return new QueryRunner(dataSource);
}
/**
* 创建数据源对象
* @return
*/
@Bean(name="ds2")
public DataSource createDataSource(){
try {
ComboPooledDataSource ds = new ComboPooledDataSource();
ds.setDriverClass(driver);
ds.setJdbcUrl(url);
ds.setUser(username);
ds.setPassword(password);
return ds;
}catch (Exception e){
throw new RuntimeException(e);
}
}
}