• 24、自动装配-@Profile环境搭建


    24、自动装配-@Profile环境搭建

    • Spring为我们提供的可以根据当前环境,动态的激活和切换一系列组件的功能。
    • 开发环境、测试环境、正式环境 数据源切换

    24.1 添加 数据源和jdbc驱动 pom 依赖

    <!-- https://mvnrepository.com/artifact/com.mchange/c3p0 -->
    <dependency>
        <groupId>com.mchange</groupId>
        <artifactId>c3p0</artifactId>
        <version>0.9.5.2</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.13</version>
    </dependency>
    

    24.2 添加MainConfigOfProfile

    package com.hw.springannotation.config;
    
    import com.mchange.v2.c3p0.ComboPooledDataSource;
    import org.springframework.aop.target.CommonsPool2TargetSource;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.EmbeddedValueResolverAware;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.PropertySource;
    import org.springframework.stereotype.Component;
    import org.springframework.util.StringValueResolver;
    
    import javax.annotation.Resource;
    import javax.sql.DataSource;
    import java.beans.PropertyVetoException;
    
    /**
     * @Description Profile
     * @Author hw
     * @Date 2018/11/29 19:25
     * @Version 1.0
     */
    @Component
    @PropertySource(value = {"classpath:/datasource.properties"})
    public class MainConfigOfProfile implements EmbeddedValueResolverAware {
    
        @Value("${db.username}")
        private String username;
    
        private String driveClassName;
    
        private StringValueResolver resolver;
    
        public void setEmbeddedValueResolver(StringValueResolver resolver) {
            this.resolver = resolver;
            this.driveClassName = this.resolver.resolveStringValue("${db.driveClassName}");
        }
    
        @Bean
        public DataSource dataSourceTest(@Value("${db.password}") String password) throws PropertyVetoException {
            ComboPooledDataSource dataSource = new ComboPooledDataSource();
            dataSource.setUser(username);
            dataSource.setPassword(password);
            dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test");
            dataSource.setDriverClass(driveClassName);
            return dataSource;
        }
    
        @Bean
        public DataSource dataSourceDev(@Value("${db.password}") String password) throws PropertyVetoException {
            ComboPooledDataSource dataSource = new ComboPooledDataSource();
            dataSource.setUser(username);
            dataSource.setPassword(password);
            dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/mysql");
            dataSource.setDriverClass(driveClassName);
            return dataSource;
        }
    
        @Bean
        public DataSource dataSourceProd(@Value("${db.password}") String password) throws PropertyVetoException {
            ComboPooledDataSource dataSource = new ComboPooledDataSource();
            dataSource.setUser(username);
            dataSource.setPassword(password);
            dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/qm_dmp");
            dataSource.setDriverClass(driveClassName);
            return dataSource;
        }
    }
    
    

    24.3 添加配置文件datasource.properties

    db.username=root
    db.password=root
    db.driveClassName=com.mysql.jdbc.Driver
    

    24.4 测试用例Test_ofProfile

    package com.hw.springannotation.test;
    
    import com.hw.springannotation.config.MainConfigOfProfile;
    import org.junit.jupiter.api.Test;
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    
    /**
     * @Description TODO
     * @Author hw
     * @Date 2018/11/29 20:14
     * @Version 1.0
     */
    public class Test_ofProfile {
    
        @Test
        public void test() {
            AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfigOfProfile.class);
            String[] definitionNames = applicationContext.getBeanDefinitionNames();
            for (String name : definitionNames) {
                System.out.println(name);
            }
    
        }
    }
    
    

  • 相关阅读:
    vue 点击出现下拉菜单,点击下拉菜单以外都要关闭菜单
    关于SET ANSI_PADDING的用法
    VUE中的/deep/用法
    VUE中的/deep/用法
    数字与字符串系列教材 (十)- 自己开发一个Java StringBuffer
    数字与字符串系列教材 (九)- Java StringBuffer常见方法
    数字与字符串系列教材 (八)- Java 比较字符串详解
    数字与字符串系列教材 (七)- Java常见字符串方法
    数字与字符串系列教材 (六)- Java中的字符串String详解
    数字与字符串系列教材 (六)- Java中的字符串String详解
  • 原文地址:https://www.cnblogs.com/Grand-Jon/p/10041688.html
Copyright © 2020-2023  润新知