IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> springboot 多环境配置(pom配置Profiles变量来,控制打包环境) -> 正文阅读

[Java知识库]springboot 多环境配置(pom配置Profiles变量来,控制打包环境)

https://wenku.baidu.com/view/2f531c3c68d97f192279168884868762caaebbd3.html

一、功能描述

有些时候,一个项目须要适配多种开发环境,如数据库不一样(mysql、oracle、db2等)、如开发环境不一样(dev、pro、test)等不一样的环境须要指定不一样的配置。这种状况下,咱们就能够采用配置Profiles来控制。在启动的时候指定不一样的配置组合,maven进行build时会自动选择指定配置。
在这里插入图片描述

二、具体配置及细节

1.首先配置在pom中配置Profiles配置

	<profiles>
        <profile>
            <id>mysql</id>
            <properties>
                <spring.profiles.active>mysql</spring.profiles.active>
            </properties>
        </profile>
        <profile>
            <id>oracle</id>
            <properties>
                <spring.profiles.active>oracle</spring.profiles.active>
            </properties>
        </profile>
        <profile>
            <id>db2</id>
            <properties>
                <spring.profiles.active>db2</spring.profiles.active>
            </properties>
        </profile>
        <profile>
            <id>dev</id>
            <properties>
                <profiles.active>dev</profiles.active>
            </properties>
        </profile>
        <profile>
            <id>prd</id>
            <properties>
                <profiles.active>prd</profiles.active>
            </properties>
        </profile>
    </profiles>

springboot中application.yml 中能够引用pom中的变量properties属性,引用的方式 @变量@

mybatis:
  configuration:
    map-underscore-to-camel-case: true
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  mapper-locations: [mybatis/**/**@spring.profiles.active@**/*Mapper.xml]
  type-aliases-package: com.*.*.domain.entity,com.*.*.system.entity

创建不一样环境的配置文件,并以目录的形式区分(固然也能够以不一样的开头命名区分)

如下是多环境配置的目录结构
在这里插入图片描述
如下是多数据库的配置,在每一个环境application中配置在这里插入图片描述

@Configuration
public class DatasourceConfig{
    @Resource
    Environment env;
    @Bean
    @Profile(value="mysql")
    public DataSource mysql(){
        return dataSources("mysql");
    }
    @Bean
    @Profile(value="oracle")
    public DataSource oracle(){
        return dataSources("oracle");
    }
    @Bean
    @Profile(value="db2")
    public DataSource db2(){
        return dataSources("db2");
    }
    /**
     * 获取数据源
     * @param type (mysql,oracle,db2 ....)
     */
    public DataSource dataSources(String type) {
        String driverClassName = env.getProperty("mydatasource."+type+".driver-class-name");
        String url =  env.getProperty("mydatasource."+type+".url");
        String username =  env.getProperty("mydatasource."+type+".username");
        String password =  env.getProperty("mydatasource."+type+".password");

        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setName(type);
        druidDataSource.setDriverClassName(driverClassName);
        druidDataSource.setUrl(url);
        druidDataSource.setUsername(username);
        druidDataSource.setPassword(password);
        //TODO .....

        return druidDataSource;
    }
}

三、打包过滤

资源过滤 pom.xml build标签下

<resources>
  <resource>
    <directory>src/main/resources</directory><!-- 指定资源文件夹,src/main/resources 默认打到classes下-->
<!-- 默认为false,配置为true,则会将改资源目录下的xml和properties文件中的引用 @配置@  和 ${} 转换成真实值-->
    <filtering>true/false</filtering>
    <includes><include></include></includes><!-- 指定要打包的文件或目录(只包含资源源文件,不包括class -->
    <excludes><exclude></exclude></excludes><!-- 指定要过滤的文件或目录 (只包含资源源文件,不包括class-->
  </resource>
</resources>
<!-- demo 过滤config目录-->
<resource>
	<directory>src/main/resources</directory>
	<excludes>
		<exclude>config/</exclude>
		<exclude>mybatis/</exclude>
	</excludes>
</resource>
<resource>
	<directory>src/main/resources/config/${package.environment}</directory>
	<includes>
		<include>config.properties</include>
	</includes>
 </resource>
 <resource>
	<directory>src/main/resources</directory>
	<includes>
		<include>mybatis/**/${spring.profiles.active}/**</include>
	</includes>
 </resource>


 <!-- 过滤class文件的插件 -->
 <plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-jar-plugin</artifactId>
   <configuration>
     <excludes>
       <exclude>com/yuyi/imap/ServletInitializer.class</exclude>
     </excludes>
   </configuration>
 </plugin>

配置profiles 多环境打包过滤

<profiles>
        <profile>
            <id>mysql</id>
            <properties>
                <spring.profiles.active>mysql</spring.profiles.active>
                <project.packaging>jar</project.packaging>
            </properties>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-quartz</artifactId>
                </dependency>
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>5.1.43</version>
                </dependency>
            </dependencies>
            <build>
                <plugins>
                    <!-- 过滤class文件的插件 -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-jar-plugin</artifactId>
                        <configuration>
                            <excludes>
                                <!-- 过滤目录下文件 -->
                                <exclude>com/yuyi/imap/oracle/*</exclude>
                                <exclude>com/yuyi/imap/db2/*</exclude>
                            </excludes>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>oracle</id>
            <properties>
                <spring.profiles.active>oracle</spring.profiles.active>
                <project.packaging>war</project.packaging>
            </properties>
            <build>
                <plugins>
                    <!-- 打成war包,过滤class文件的插件 -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-war-plugin</artifactId>
                        <configuration>
                            <packagingExcludes>
                                WEB-INF/classes/com/yuyi/imap/mysql/,
                                WEB-INF/classes/com/yuyi/imap/db2/
                            </packagingExcludes>
                        </configuration>
                    </plugin>
                    <!-- 打成jar包时生效 过滤class文件的插件-->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-jar-plugin</artifactId>
                        <configuration>
                            <excludes>
                                <!-- 过滤目录 -->
                                <exclude>com/yuyi/imap/mysql/</exclude>
                                <!-- 过滤文件-->
                                <exclude>com/yuyi/imap/db2/*</exclude>
                            </excludes>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

同一个接口,不一样的实现能够经过重名和注解实现在这里插入图片描述

同一个接口有两种实现,而且采用同一个命名,这样在启动的时候会报错(别名重复)因此须要将不用的目录给排除掉,不编译成class,这里采用idea
在这里插入图片描述
这么作只会影响springboot启动的时候,打包的时候不受此影响。

打包时指定profile 就能够将不一样环境的资源文件和java代码以及jar排除掉,最小打包。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-09-15 01:51:23  更:2022-09-15 01:53:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 12:58:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码