如何在开发中使用内存数据库,在春天使用普通数据库?

时间:2015-08-24 09:14:57

标签: java spring spring-mvc spring-boot spring-data-rest

我有一个spring-boot / spring-data-rest项目。我希望能够根据一些env变量使用内存/普通数据库。这可能吗?

现在我只是用我的生产数据库参数评论我的应用程序配置

#spring.jpa.database=POSTGRESQL
#spring.datasource.platform=postgres
...

3 个答案:

答案 0 :(得分:3)

我强烈建议您阅读Spring Profiles以及Spring Boot如何将其用于load different config files

所以基本上你有两个选择

  1. 使用个人资料
  2. 在指定位置之一的每个环境中使用不同的application.properties
  3. 对于工作选项1,在application.properties(可能是生产的)中添加了一些默认值。并创建一个application-dev.properties,其中包含您的内存内容。

    现在,在启动应用程序之前,要么创建一个名为spring.active.profiles=dev的环境变量,要么将其传递给应用程序-Dspring.active.profiles=dev

    现在,当您启动应用程序时,将加载application.propertiesapplication-dev.properties。后者覆盖默认属性中的任何属性。

答案 1 :(得分:1)

是的,可以使用Spring profile

您可以定义不同的个人资料,并根据您的要求激活您的任何个人资料。

您可以通过@Mkyong推荐Spring Profiles example

答案 2 :(得分:0)

我使用maven进行此配置。可以使用所需的参数创建maven配置文件。例如:

<profiles>
<profile>
    <id>db-local</id>
    <properties>
        <spring.profile.name>dbcp</spring.profile.name>
        <hibernate.dialect>org.hibernate.dialect.HSQLDialect</hibernate.dialect>
        <hibernate.driver>org.hsqldb.jdbcDriver</hibernate.driver>
        ...
    </properties>
</profile>

<profile>
    <id>db-central</id>
        <properties>
        <spring.profile.name>dbcp</spring.profile.name>
        <hibernate.dialect>org.hibernate.dialect.Oracle10gDialect</hibernate.dialect>
        <hibernate.driver>oracle.jdbc.driver.OracleDriver</hibernate.driver>
        ...
    </properties>
</profile>

...

然后您可以在java代码或xml描述符中定义这些变量,如下所示:$ {hibernate.dialect}。

如果你这样做,那么maven必须在编译/打包之前过滤这些文件以替换maven变量。这可以使用maven resources插件或maven war插件来完成。

这里是maven过滤的一个例子:

<plugins>
    <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.4</version>
        <configuration>
            <webResources>
                <resource>
                    <filtering>true</filtering>
                    <directory>src/main/webapp</directory>
                    <includes>
                        <include>WEB-INF/web.xml</include>
                        <include>WEB-INF/springConfig/app-bbdd-dbcp.xml</include>
                        <include>WEB-INF/springConfig/app-security.xml</include>
                    </includes>
                </resource>
            </webResources>
        <configuration>
    </plugin>
</plugins>

您可以通过maven变量激活或停用弹簧插件。

在这里,您可以看到我所描述的完整工作项目:https://github.com/malaguna/casiopea