Spring-Profile环境切换

目录

DataSource.java

package org.javaboy.ioc;

/**
 * @author 邓雪松 (づ ̄ 3 ̄)づ)
 * @create 2021-10-23-19-17
 */
public class DataSource {
    private String url;
    private String username;
    private String password;

    @Override
    public String toString() {
        return "DataSource{" +
                "url='" + url + '\'' +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

JavaConfig.java(这是用java的方式后边的xml是配置方式)

package org.javaboy.ioc;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

/**
 * @author 邓雪松 (づ ̄ 3 ̄)づ)
 * @create 2021-10-21-21-00
 */
@Configuration
public class JavaConfig {
    //比如下边的是生产环境 Profile()内指定bean的环境
    @Bean
    @Profile("dev")
    DataSource devDs(){
        DataSource ds = new DataSource();
        ds.setUrl("jdbc:mysql:///vhr");
        ds.setUsername("root");
        ds.setPassword("123");
        return ds;
    }

    //下边比如是开发环境的ds
    @Bean
    @Profile("prod")
    DataSource prodDs(){
        DataSource ds = new DataSource();
        ds.setUrl("jdbc:mysql://192.168.23.56:3306/vhr");
        ds.setUsername("root");
        ds.setPassword("456");
        return ds;
    }
}

Main.java

package org.javaboy.ioc;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.lang.reflect.AnnotatedElement;

/**
 * @author 邓雪松 (づ ̄ 3 ̄)づ)
 * @create 2021-10-21-21-09
 */
public class Main {
    public static void main(String[] args) {
        //m2();
        ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext();
        ctx.getEnvironment().setActiveProfiles("prod");
        ctx.setConfigLocation("applicationContext.xml");
        ctx.refresh();
        DataSource ds = ctx.getBean(DataSource.class);
        System.out.println("ds = " + ds);

    }
    private  static void m2(){
        AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
        //设置当前的环境
        ctx.getEnvironment().setActiveProfiles("dev");//dev改为prod就是开发环境的了
        ctx.register(JavaConfig.class);
        ctx.refresh();//刷新容器
        DataSource ds = ctx.getBean(DataSource.class);
        System.out.println("ds = "+ds);
    }
}

applicationContext.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.xsd">


    <beans profile="dev">
        <bean class="org.javaboy.ioc.DataSource" id="devDs">
            <property name="url" value="jdbc:mysql:///vhr"/>
            <property name="username" value="root"/>
            <property name="password" value="123"/>
        </bean>
    </beans>

    <beans profile="prod">
        <bean class="org.javaboy.ioc.DataSource" id="prodDs">
            <property name="username" value="root"/>
            <property name="password" value="456"/>
            <property name="url" value="jdbc:mysql://56.36.12.32..3306/vhr"/>
        </bean>
    </beans>
</beans>
posted @ 2021-10-23 20:32  ╰(‵□′)╯  阅读(37)  评论(0)    收藏  举报