Profile 的含义其实是“一组对于用户进行描述的数据”,所以个人觉得“档案”应该是最贴切的。
在spring中使用profile的方法用两种java注释和xml配置
@Configuration
@ComponentScan(basePackages = "com.websystique.spring")
public class AppConfig {
@Autowired
public DataSource dataSource;
}
public interface DatabaseConfig {
DataSource createDataSource();
}
@Profile("Development")
@Configuration
public class DevDatabaseConfig implements DatabaseConfig {
@Bean
public DataSource createDataSource() {
System.out.println("Creating DEV database");
DriverManagerDataSource dataSource = new DriverManagerDataSource();
/*
* Set MySQL specific properties for Development Environment
*/
return dataSource;
}
}
@Profile("Production")
@Configuration
public class ProductionDatabaseConfig implements DatabaseConfig {
@Bean
public DataSource createDataSource() {
System.out.println("Creating Production database");
DriverManagerDataSource dataSource = new DriverManagerDataSource();
/*
* Set ORACLE specific properties for Production environment
*/
return dataSource;
}
}
测试类
public class AppMain {
public static void main(String args[]){
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
//Sets the active profiles
context.getEnvironment().setActiveProfiles("Development");
//Scans the mentioned package[s] and register all the @Component available to Spring
context.scan("com.websystique.spring");
context.refresh();
context.close();
}
}
xml的配置方法
prod-config-context.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/websystique" />
<property name="username" value="myuser" />
<property name="password" value="mypassword" />
</bean>
</beans>
app-config.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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<context:component-scan base-package="com.websystique.spring"/>
<beans profile="Development">
<import resource="dev-config-context.xml"/>
</beans>
<beans profile="Production">
<import resource="prod-config-context.xml"/>
</beans>
</beans>
dev-config-context.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/websystique" />
<property name="username" value="myuser" />
<property name="password" value="mypassword" />
</bean>
</beans>