spring: 使用profiles选择数据源(结合嵌入式数据源EmbeddedDatabaseBuilder)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了spring: 使用profiles选择数据源(结合嵌入式数据源EmbeddedDatabaseBuilder),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4057字,纯文字阅读大概需要6分钟。
内容图文
![spring: 使用profiles选择数据源(结合嵌入式数据源EmbeddedDatabaseBuilder)](/upload/InfoBanner/zyjiaocheng/498/88745d27181e4b4d9ebd17fba7250842.jpg)
一般需要在不同的环境(日常环境、性能测试环境、预发环境和生产环境等等)中配置不同的数据源,例如,在开发时非常适合使用嵌入式数据源、在QA环境中比较适合使用DBCP的BasicDataSource、在生产环境中则适合使用<jee:jndi-lookup>元素,即使用JNDI查询数据源。
在Spring实战3:装配bean的进阶知识一文中我们探讨过Spring的bean-profiles特性,这里就需要给不同的数据源配置不同的profiles,Java配置文件的内容如下所示:
package org.test.spittr.config; import org.apache.commons.dbcp2.BasicDataSource; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; import org.springframework.jndi.JndiObjectFactoryBean; import javax.sql.DataSource; @Configuration public class DataSourceConfiguration { @Profile("development") @Bean public DataSource embeddedDataSource() { return new EmbeddedDatabaseBuilder() .setType(EmbeddedDatabaseType.H2) .addScript("classpath*:schema.sql") .addScript("classpath*:test-data.sql") .build(); } @Profile("qa") @Bean public BasicDataSource basicDataSource() { BasicDataSource ds = new BasicDataSource(); ds.setDriverClassName("org.h2.Driver"); ds.setUrl("jdbc:h2:tcp://localhost/~/spitter"); ds.setUsername("sa"); ds.setPassword(""); ds.setInitialSize(5); //初始大小 ds.setMaxTotal(10); //数据库连接池大小 return ds; } @Profile("production") @Bean public DataSource dataSource() { JndiObjectFactoryBean jndiObjectFactoryBean = new JndiObjectFactoryBean(); jndiObjectFactoryBean.setJndiName("/jdbc/SpittrDS"); jndiObjectFactoryBean.setResourceRef(true); jndiObjectFactoryBean.setProxyInterface(javax.sql.DataSource.class); return (DataSource)jndiObjectFactoryBean.getObject(); } }
利用@Profile注解,Spring应用可以运行时再根据激活的profile选择指定的数据源。在上述代码中,当development对应的profile被激活时,应用会使用嵌入式数据源;当qa对应的profile被激活时,应用会使用DBCP的BasicDataSource;当production对应的profile被激活时,应用会使用从JNDI中获取的数据源。
上述代码对应的XML形式的配置代码如下所示:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd"> <beans profile="qa"> <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" p:driverClassName="org.h2.Driver" p:url="jdbc:h2:tcp://localhost/~/spitter" p:username="sa" p:password="" p:initialSize="5" /> </beans> <beans profile="production"> <jee:jndi-lookup id="dataSource" jndi-name="/jdbc/SpittrDS" resource-ref="true"/> </beans> <beans profile="development"> <jdbc:embedded-database id="dataSource" type="H2"> <jdbc:script location="classpath*:schema.sql" /> <jdbc:script location="classpath*:test-data.sql" /> </jdbc:embedded-database> </beans> </beans>
建立好数据库连接后,就可以执行访问数据库的任务了。正如之前提到的,Spring对很多持久化技术提供了支持,包括JDBC、Hibernate和Java Persistence API(API)。在下一小节中,我们首先介绍如何在Spring应用中使用JDBC书写持久层。
https://yq.aliyun.com/articles/54079
spring: 使用profiles选择数据源(结合嵌入式数据源EmbeddedDatabaseBuilder)
标签:script www. arp database port post data cto resource
本文系统来源:https://www.cnblogs.com/achengmu/p/8301504.html
内容总结
以上是互联网集市为您收集整理的spring: 使用profiles选择数据源(结合嵌入式数据源EmbeddedDatabaseBuilder)全部内容,希望文章能够帮你解决spring: 使用profiles选择数据源(结合嵌入式数据源EmbeddedDatabaseBuilder)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。