使用@Profile进行环境搭建,读取配置文件的方式
1、@Profile注解是Spring为我们提供的可以根据当前环境,动态的激活和切换一系列bean的功能。
我们以开发环境、测试环境、生产环境连接不同的数据源为例。
新建一个组件配置类:MainConfigOfProfile

2、在pom.xml文件中加入数据源和数据库的相关依赖包:
<!-- 数据库连接池,驱动 -->
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.41</version>
</dependency>

3、在组件配置类中配置上测试环境,生产环境,开发环境的数据源。
package com.gwolf.config;
import javax.sql.DataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.mchange.v2.c3p0.ComboPooledDataSource;
@Configuration
public class MainConfigOfProfile {
@Bean
public DataSource dataSourceTest() throws Exception {
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setUser("root");
dataSource.setPassword("root");
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/ssm_crud");
dataSource.setDriverClass("com.mysql.jdbc.Driver");
return dataSource;
}
@Bean
public DataSource dataSourceDev() throws Exception {
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setUser("root");
dataSource.setPassword("root");
dataSource.setJdbcUrl("jdbc:mysql://localhost:3307/ssm_crud");
dataSource.setDriverClass("com.mysql.jdbc.Driver");
return dataSource;
}
@Bean
public DataSource dataSourceProduct() throws Exception {
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setUser("root");
dataSource.setPassword("root");
dataSource.setJdbcUrl("jdbc:mysql://localhost:3308/ssm_crud");
dataSource.setDriverClass("com.mysql.jdbc.Driver");
return dataSource;
}
}

4、接下来数据库的配置从配置文件中读取。
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/ssm_crud
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.user=root
jdbc.password=root

5、读取配置文件中的值有很多中方式,首先使用注解@PropertySource在组件配置类中加载配置文件。

6、可以使用@Value注解得到属性资源文件中的值。

7、在方法上使用@Value注解得到属性资源文件中的值。
package com.gwolf.config;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
@Configuration
@PropertySource("classpath:dbconfig.properties")
public class MainConfigOfProfile {
@Value("${jdbc.user}")
private String user;
@Bean
public DataSource dataSourceTest(@Value("${jdbc.password}") String password) throws Exception {
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setUser(user);
dataSource.setPassword(password);
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/ssm_crud");
dataSource.setDriverClass("com.mysql.jdbc.Driver");
return dataSource;
}
@Bean
public DataSource dataSourceDev() throws Exception {
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setUser("root");
dataSource.setPassword("root");
dataSource.setJdbcUrl("jdbc:mysql://localhost:3307/ssm_crud");
dataSource.setDriverClass("com.mysql.jdbc.Driver");
return dataSource;
}
@Bean
public DataSource dataSourceProduct() throws Exception {
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setUser("root");
dataSource.setPassword("root");
dataSource.setJdbcUrl("jdbc:mysql://localhost:3308/ssm_crud");
dataSource.setDriverClass("com.mysql.jdbc.Driver");
return dataSource;
}
}
