springboot配置文件 application.properties
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql:///xxx
jdbc.username=root
jdbc.password=root
实体类:对应配置文件,字段名需要和配置文件的一样。记得生成get set方法
这里prefix(前缀),顾名思义,如果配置文件是 ali.jdbc.url,那prefix = "ali.jdbc"
@ConfigurationProperties(prefix = "jdbc") //是springboot的注解,只能读取springboot的application的配置文件
public class AcctJdbcProperties {
private String driverClassName;
private String url;
private String username;
private String password;
}
有了上面的配置类,就需要使用它的配置值。
@EnableConfigurationProperties顾名思义,即使用ConfigurationProperties。
@Bean是返回一个实体,放到spring容器里,全局都可以使用。即,你想在某个类(这个类需要被spring管理)里用他,那声明成员变量,@Autowired注入即可。
@Configuration
@EnableConfigurationProperties(AcctJdbcProperties.class)//指定加载某个配置类
public class JdbcConfiguration {
@Bean
public DataSource getDataSource(AcctJdbcProperties jdbcProperties){
DruidDataSource source = new DruidDataSource();
source.setDriverClassName(jdbcProperties.getDriverClassName());
source.setUrl(jdbcProperties.getUrl());
source.setUsername(jdbcProperties.getUsername());
source.setPassword(jdbcProperties.getPassword());
return source;
}
}
还有一种写法,不需要写实体类,这就需要配置文件的字段名和返回的类的字段名一样。
@Configuration
public class JdbcConfiguration {
@Bean
@ConfigurationProperties(prefix = "jdbc")
public DataSource getDataSource(){
DruidDataSource source = new DruidDataSource();
return source;
}
}
如果是复杂系统,尤其是后期会和很多系统对接的,返回的类是第三方jar包的,而非自己服务里的,那不建议用这种,使用上面那种,自定义一个实体类。相当于加层防腐层做隔离。
方法二:只有配置文件(springboot集成了)使用HikariDataSource
spring.datasource.url=jdbc:mysql://192.168.100.5:3306/acct?allowMultiQueries=true
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=root
使用Druid
spring.datasource.url=jdbc:mysql:///acct?useSSL=false
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=66634
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
方法三:通过spring的applicationContext获取
applicationContext.getEnvironment().getProperty("ali.jdbc.url");
这是比较自由的方式,在任何地方都可以使用,获取各种配置。
这种方式还有个好处,获取数组形式的配置方便。例如多数据源的配置信息。
ali:
jdbc:
defaultDataSourceId: trans
databaseIdProvider: mysql
dataSources:
- id: trans
pool:
url: jdbc:oracle:thin:@192.168.12.3:1521:orcl
driverClassName: oracle.jdbc.driver.OracleDriver
username: ali_trans
password: ali_trans
initialSize: 1
minIdle: 1
maxActive: 20
maxWait: 60000
configLocation: classpath:conf/mybatis.xml
mybatisPath: classpath*:mybatis/*.xml,classpath*:mapper/trans/*.xml,
- id: oa
pool:
url: jdbc:mysql://192.168.100.3:3306/ali_oa?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false
driverClassName: com.mysql.cj.jdbc.Driver
username: root
password: 999999
initialSize: 1
minIdle: 1
maxActive: 20
maxWait: 60000
configLocation: classpath:conf/mybatis.xml
mybatisPath: classpath*:mybatis/*.xml,classpath*:mapper/oa/*.xml
applicationContext.getEnvironment().getProperty("ali.jdbc.dataSources[0].id");
applicationContext.getEnvironment().getProperty("ali.jdbc.dataSources[0].pool.url");
//用for循环获取
applicationContext.getEnvironment().getProperty("ali.jdbc.dataSources[" + i + "].id");
//如果i超过了,获取不到返回的是null
方法四:@Value
SpringBoot读取yml文件中配置数组的2种方法 - 编程宝库
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)