beans propfiles 配置多种环境

个人描述:

    最近参与公司的一个关于接口开发的项目。里面用到多个环境的切换,开发环境,测试环境,生产环境只需要修改一下spring.profiles.active 参数即可。因为之前的项目没有碰到过,所以本人对此学习了一下。这里做一个多种环境,每个环境只配置一个数据源的demo。

项目目录结构:


第一步:配置SSM框架,引入对应的包,如果你是用idea工具的话,我们创建maven 项目之后,这些spring 的基本jar包会帮我们自动装配。

这里使用的是C3P0数据连接

<dependency>
        <groupId>c3p0</groupId>
        <artifactId>c3p0</artifactId>
         <version>0.9.1.2</version>
</dependency>

第二步:配置applicationContext.xml,这里配置完成之后,下面红色标记的bean id="dataSource" 会出现红色错误提示,这是因为id重复了,当我们配置了spring.profiles.activec参数之后,系统根据spring.profiles.active参数值去加载对应的beans,所以在与mybatis整合时,不会出现bean重复报错的情况。因此不会影响项目的正常启动与使用

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd
                  http://www.springframework.org/schema/context
                  http://www.springframework.org/schema/context/spring-context-4.0.xsd">


    <!--添加spring 与mybatis 整合-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="mapperLocations" value="classpath:mapper/*.xml"/>
    </bean>
    <!--mybatis与dao层的映射-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.wl.web.dao"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    </bean>


    <!--通过 profile 配置多环境数据源-->

    <!--dev  开发环境-->

    <beans profile="dev">
        <context:property-placeholder location="applicationdev.properties" />
        < bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="${dev.jdbc.driverClass}"/>
            <property name="jdbcUrl" value="${dev.jdbc.jdbcUrl}"/>
            <property name="user" value="${dev.jdbc.username}"/>
            <property name="password" value="${dev.jdbc.password}"/>
            <property name="initialPoolSize" value="${dev.jdbc.initialPoolSize}"/>
            <property name="maxIdleTime" value="${dev.jdbc.maxIdleTime}"/>
            <property name="maxPoolSize" value="${dev.jdbc.maxPoolSize}"/>
            <property name="minPoolSize" value="${dev.jdbc.minPoolSize}"/>
        </bean>
    </beans>

    <!--test  测试环境-->
    <beans profile="test">
        <context:property-placeholder location="applicationtest.properties" />
        < bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="${test.jdbc.driverClass}"/>
            <property name="jdbcUrl" value="${test.jdbc.jdbcUrl}"/>
            <property name="user" value="${test.jdbc.username}"/>
            <property name="password" value="${test.jdbc.password}"/>
            <property name="initialPoolSize" value="${test.jdbc.initialPoolSize}"/>
            <property name="maxIdleTime" value="${test.jdbc.maxIdleTime}"/>
            <property name="maxPoolSize" value="${test.jdbc.maxPoolSize}"/>
            <property name="minPoolSize" value="${test.jdbc.minPoolSize}"/>
        </bean>
    </beans>

</beans>

第三步:配置开发环境下的数据源信息

applicationdev.properties

dev.jdbc.driverClass =oracle.jdbc.driver.OracleDriver
dev.jdbc.username =dev1234
dev.jdbc.password =dev1234
dev.jdbc.jdbcUrl = jdbc:oracle:thin:@ip:1521:devdb
dev.jdbc.initialPoolSize = 5
dev.jdbc.maxPoolSize =10
dev.jdbc.minPoolSize =5

dev.jdbc.maxIdleTime =2000

第四步:配置测试环境下的连接信息

applicationtest.properties

test.jdbc.driverClass =oracle.jdbc.driver.OracleDriver
test.jdbc.username =test1234
test.jdbc.password =test1234
test.jdbc.jdbcUrl =jdbc:oracle:thin:@ip:1521:testdb
test.jdbc.initialPoolSize = 5
test.jdbc.maxPoolSize =10
test.jdbc.minPoolSize =5

test.jdbc.maxIdleTime =2000

这样的话,我们还可以依次类推,配置生产环境的连接信息

这里我们就配置完成了,写一下测试类测试一下吧!

第五步:测试类

import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import javax.sql.DataSource;
import static org.junit.Assert.assertNotNull;


@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})

//@ActiveProfiles({"dev"})

@ActiveProfiles({"test"})

public class TestDBConnect {
    @Autowired
    DataSource dataSource;
    @Test
    public void testDev(){
        assertNotNull(dataSource);
        ComboPooledDataSource comboPooledDataSource = (ComboPooledDataSource) dataSource;
        System.out.println(comboPooledDataSource.getJdbcUrl());
    }

}

通过控制台的打印,我们可以看到我们连接的信息是不是正确的


第六步:项目启动时,配置数据连接环境。有很多方式

1,

web.xml中加入:

<context-param>
    <param-name>spring.profiles.active</param-name>
    <param-value>dev</param-value>
</context-param>

2,下图是run环境下的配置情况,Debug也同样配置spring.profiles.active=dev即可这样我们debug模式下,也可以正常启动了

JAVA_OPS 配置的是堆,和永久区的大小。这个要根据不通项目配置不一样。也可以不配,如果项目可以正常启动的话




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值