Spring Boot入门教程-数据源外部配置
来源:互联网 发布:手机淘宝怎么上传宝贝 编辑:程序博客网 时间:2024/05/29 19:45
在实际项目中,测试环境与线上环境是分开的,数据库也是分开的,前边关于mybatis集成时,数据源是在application.properties中配置,这样如果从测试环境转到线上环境就不得不每次都去修改,稍有不慎就容易出错,那样后果就惨了。所以我们就要考虑吧数据源的配置挪到外边,从项目中获取相关配置,来自定义数据源。
1.首先在磁盘上创建件配置文件 datasource-config.xml,账号密码等数据库连接信息自行修改
<?xml version="1.0" encoding="UTF-8"?><config> <!-- 数据源配置 --> <data-source> <db-host>localhost</db-host> <db-port>3306</db-port> <username>username</username> <password>password</password> <db-name>db-name</db-name>--> <driver-class-name>com.mysql.jdbc.Driver</driver-class-name> <db-protocol>jdbc:mysql:</db-protocol> <db-param>?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true</db-param> <max-active>50</max-active> <max-idle>30</max-idle> <max-wait>100</max-wait> <initial-size>5</initial-size> <pool-prepared-statements>true</pool-prepared-statements> <validation-query>select 1 from dual</validation-query> <remove-abandoned>true</remove-abandoned> <remove-abandoned-timeout>150</remove-abandoned-timeout> <test-while-idle>true</test-while-idle> <time-between-eviction-runs-millis>3000</time-between-eviction-runs-millis> <min-evictable-idle-time-millis>5200</min-evictable-idle-time-millis> <default-autocommit>true</default-autocommit> </data-source></collectmail-config>
2.在resource下创建文件夹config,并创建config.propertie文件,添加
config.location=D\:\\etc\\tomcm\\datasource-config.xml #配置文件路径 只是我的,用的话自行修改
3.添加之前写好的配置文件工具类
/** * 配置工具类 获取配置信息,可以更换配置文件的路径名字,来获取不同文件内的内容 * */public class PropertiesUtil {public static Properties loadProperties(String properties) throws Exception {Properties prop = new Properties();InputStream propertiesStream = PropertiesUtil.class.getClassLoader().getResourceAsStream(properties);try {prop.load(propertiesStream);} finally {propertiesStream.close();}return prop;}public static <T> T getPara(Properties properties, Class<T> type, String key) {String value = properties.getProperty(key);return parseValue(type, value);}@SuppressWarnings("unchecked")public static <T> T parseValue(Class<T> type, String value) {if (Integer.class == type || int.class == type) {return (T) Integer.valueOf(value);}if (Double.class == type || double.class == type) {return (T) Double.valueOf(value);}if (Long.class == type || long.class == type) {return (T) Long.valueOf(value);}if (Boolean.class == type || boolean.class == type) {return (T) Boolean.valueOf(value);}return (T) value;}//public static void main(String[] args) throws Exception {//Properties properties = loadProperties("config/config.properties");//System.out.println(getPara(properties, boolean.class, "si.printsql"));//false//System.out.println(getPara(properties, String.class, "si.page.pagersize"));//10//}}
/** * 配置工具类 获取配置信息,来获取指定文件内的内容 * */public class ConfigUtil {private static Log log = LogFactory.getLog(ConfigUtil.class);//需要解析的properties文件private static String propertiesUrl = "config/config.properties";private static Properties prop = null;private static Configuration config = null;static{init();}private static void init(){prop = new Properties();InputStream in = null;try {in = PropertiesUtil.class.getClassLoader().getResourceAsStream(propertiesUrl);prop.load(in);System.out.println(prop.getProperty("config.location"));config = new XMLConfiguration(prop.getProperty("config.location"));} catch (IOException e) {log.error(e.getMessage(),e);} catch (ConfigurationException e) {e.printStackTrace();} finally{if(in!=null){try {in.close();} catch (IOException e) {log.error(e.getMessage(),e);in = null;}}}}/** * 获得String类型的属性值 * * @param key * @return */public static String getString(String key){return config==null?null:config.getString(key);}/** * 获得int类型的属性值 * * @param key * @return */public static int getInt(String key){return config==null?null:config.getInt(key);}/** * 获得boolean类型的属性值 * * @param key * @return */public static boolean getBoolean(String key){return config==null?null:config.getBoolean(key);}////public static void main(String[] args) throws Exception {//System.out.println(ConfigUtil.getString("data-source.db-host"));//}}
pom.xml中需要加入依赖
<dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>1.4</version></dependency><dependency><groupId>commons-configuration</groupId><artifactId>commons-configuration</artifactId><version>1.2</version></dependency>
4.自定义数据源
@Configuration @Componentpublic class DataSource extends org.apache.commons.dbcp.BasicDataSource { public DataSource() { super(); this.setDriverClassName(ConfigUtil .getString("data-source.driver-class-name")); this.setUrl(ConfigUtil.getString("data-source.db-protocol") + "//" + ConfigUtil.getString("data-source.db-host") + ":" + ConfigUtil.getString("data-source.db-port") + "/" + ConfigUtil.getString("data-source.db-name") + ConfigUtil.getString("data-source.db-param")); this.setUsername(ConfigUtil.getString("data-source.username")); this.setPassword(ConfigUtil.getString("data-source.password")); this.setMaxActive(ConfigUtil.getInt("data-source.max-active")); this.setMaxIdle(ConfigUtil.getInt("data-source.max-idle")); this.setMaxWait(ConfigUtil.getInt("data-source.max-wait")); this.setInitialSize(ConfigUtil.getInt("data-source.initial-size")); this.setPoolPreparedStatements(ConfigUtil.getBoolean("data-source.pool-prepared-statements")); this.setValidationQuery(ConfigUtil.getString("data-source.validation-query")); this.setRemoveAbandoned(ConfigUtil.getBoolean("data-source.remove-abandoned")); this.setRemoveAbandonedTimeout(ConfigUtil.getInt("data-source.remove-abandoned-timeout")); this.setTestWhileIdle(ConfigUtil.getBoolean("data-source.test-while-idle")); this.setTimeBetweenEvictionRunsMillis(ConfigUtil.getInt("data-source.time-between-eviction-runs-millis")); this.setMinEvictableIdleTimeMillis(ConfigUtil.getInt("data-source.min-evictable-idle-time-millis")); this.setDefaultAutoCommit(ConfigUtil.getBoolean("data-source.default-autocommit")); }}5.将 application.properties中原来的数据源去掉,添加
spring.datasource.type=com.example.demo.datasource.DataSource #自定义数据源位置
@RequestMapping("getPage") @ResponseBody public List<User> getByPage() { PageHelper.startPage(1, 3);//页数 每页数据数 return userService.getByPage(); }
数据获取成功
阅读全文
0 0
- Spring Boot入门教程-数据源外部配置
- Spring Boot--外部配置
- spring boot 配置druid数据源
- Spring Boot 配置Druid数据源
- spring boot 动态数据源配置
- Spring Boot 核心-外部配置
- Spring-boot中利用外部配置文件生成数据源
- Spring-boot中利用外部配置文件生成数据源
- spring-boot jpa 配置两个数据源
- Spring boot 数据源未配置异常
- Spring Boot+Mybatis动态数据源配置
- spring boot(12)-数据源配置原理
- spring boot(12)-数据源配置原理
- spring boot(7) 配置外部tomcat(1)
- spring boot application.properties文件外部配置
- Spring Boot 支持多种外部配置方式
- Spring Boot 支持多种外部配置方式
- Spring Boot使用Druid数据源配置和监控配置
- 优秀技术文章集合
- Unity 构建IOS和ANDROID工程 (一)
- 使用JavaScript实现页面打印
- 字母包含
- 第一个过滤器实例
- Spring Boot入门教程-数据源外部配置
- 聚能聊 | 哪个国家拥有全世界最牛逼的程序员?
- 数组概述
- PAT (Basic Level) Practise (中文) 1015. 德才论 (25)
- 增强学习(二)——策略迭代与值迭代
- myeclipse2016 cl破解 亲测好用 没有闪退问题
- HTextView:非常炫酷的 TextView 效果
- hadoop最新稳定版本使用建议
- 一张图看懂SpringMVC请求流程