当前位置: 首页 > 知识库问答 >
问题:

是插入适当的application.properties名称到@Property tySource的方式?

夹谷野
2023-03-14

在Spring专家上有应用

我想有不同的应用程序。不同配置文件的属性,通过命令行传递。

我的数据库配置为:

import org.apache.log4j.Logger;
import org.hibernate.jpa.HibernatePersistenceProvider;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import javax.annotation.Resource;
import javax.persistence.EntityManagerFactory;
import javax.sql.DataSource;
import java.util.Properties;

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = {"data"})
@PropertySource("classpath:application.properties")
@ComponentScan(basePackages = {"data.persistence"})
public class PersistenceConfig {
    private static final String PROP_DATABASE_DRIVER = "db.driver";
    private static final String PROP_DATABASE_URL = "db.url";
    private static final String PROP_DATABASE_USERNAME = "db.username";
    private static final String PROP_DATABASE_PASSWORD = "db.password";
    private static final String PROP_HIBERNATE_DIALECT = "db.hibernate.dialect";
    private static final String PROP_HIBERNATE_SHOW_SQL = "db.hibernate.show_sql";
    private static final String PROP_ENTITYMANAGER_PACKAGES_TO_SCAN = "db.entitymanager.packages.to.scan";
    private static final String PROP_HIBERNATE_HBM2DDL_AUTO = "db.hibernate.hbm2ddl.auto";

    @Resource
    private Environment env;
    protected final Logger log = Logger.getLogger(getClass());

   ...
}

如果我想为不同的服务器(qa和at)使用不同的配置文件,我需要创建两个这样的类,标记为@Profile(“qa”)和@Profile(“at”)

确实存在创建两个应用程序的方法。属性,将参数传递到命令行,并在@(PropertySource)路径中插入qa或at应用程序。属性?

在启动应用程序之前插入application.properties文件名的方法是什么?

共有1个答案

向苗宣
2023-03-14

在Spring Boot中,您可以使用您的配置文件名创建多个应用程序属性(或yaml)文件:

application-qa.properties
application-at.properties

每个都有特定于该环境的属性。然后通过Spring。配置文件。active=qa到你的应用程序,并且只会加载相应的属性文件。这样可以减轻您维护多个Java类的负担。

 类似资料:
  • 问题内容: 我对mongodb和morphia相当陌生,在开始使用它之后,我意识到mongodb文档中还有一个额外的部分,该记录包含一个文件名“ ClassName”,其中包含了morphia映射的类的值。 这正常吗?我觉得这违反了数据库中数据的完整性,是否有解决的办法? 问题答案: 您可以显式禁用该属性: 如果只有一个实体类,我通常会抑制该属性。如果要对我的实体进行子类化,则将明确启用它(这是默

  • 问题内容: 有没有办法获取Java中当前正在执行的方法的名称? 问题答案: 从技术上讲这将起作用… 但是,将在编译时创建一个新的匿名内部类(例如)。因此,这将为.class每个部署此技巧的方法创建一个文件。另外,在运行时每次调用时都会创建一个其他未使用的对象实例。因此,这可能是可以接受的调试技巧,但确实会带来大量开销。 该技巧的一个优点是返回值可用于检索方法的所有其他信息,包括注释和参数名称。这样

  • 问题内容: 我需要一个存储键值对的表,因此我创建了一个表,其中包含一个名为“ Key”的列和一个名为“ Value”的列。 这将失败: “关键字’key’附近的语法不正确。” 也许我不应该将其称为“键”,但我只是想知道是否可以使用名称为sql关键字的列? 谢谢 问题答案: 您可以在[]括号内括起类似的列名。所以:

  • 问题内容: 您好在我的Java类Toto中,我有3个静态方法,我想知道当我处于这些方法之一时,如何在try catch bloc中获取和显示package.class.methode的名称?我在methodeA中尝试过: 但它不起作用,我怎么也可以尝试显示它?谢谢 问题答案: -将打印整个异常stracktrace-即所有方法+行号。

  • 问题内容: 在 Hibenate中, 我使用的是 MariaDB, 但找不到 MariaDB 的方言类名称。 在Hibernate中,MySQL5方言的名称是 对于Oracle 10g MariaDB 的方言类名称是什么? 问题答案: 正如此处宣布的那样,从Hibernate ORM 5.2.8(大约2017年2月15日)开始, 和 可用。公告的结论是 如果您使用的是MariaDB,最好从现在开始

  • 问题内容: 我有一个表实体映射为: 当我尝试在数据库中插入新记录时,表名被小写转换为:items_to_register,但是我的表名是ITEMS_TO_REGISTER如何在不更改MySql配置的情况下解决问题?(my.cnf) 我在application.properties文件中: 问题答案: 在hibernate5上,它将是 在您的 application.properties 文件中。