天道酬勤,学无止境

spring-profiles

Use @Profile to decide to execute test class

According to https://stackoverflow.com/a/33042872/4106030 we should not use @Profile to let a spring profile decide whether all tests in a test class shall be executed or ignored. There is stated: @Profile is used to selectively enable a component (e.g., @Service, etc.), @Configuration class, or @Bean method if one of the named bean definition profiles is active in the Spring Environment for the ApplicationContext. This annotation is not directly related to testing: @Profile should not be used on a test class. Is this true? If yes then why?

2021-11-27 06:41:00    分类:问答    java   spring   spring-boot   spring-test   spring-profiles

如何使用 Maven 配置文件设置 spring 活动配置文件(How to set spring active profiles with maven profiles)

问题 我有一个使用 maven 作为构建工具的应用程序。 我正在使用 maven 配置文件从不同的配置文件设置不同的属性。 我想要做的是 maven 中的所有活动配置文件也将被移植到 spring 活动配置文件,以便我可以在 bean 签名( @profile )中引用它们。 但我不知道该怎么做。 例如:考虑以下 maven 设置 <profiles> <profile> <id>profile1</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> </properties> </profile> <profile> <id>profile2</id> <properties> </properties> </profile> <profile> <id>development</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> </properties> </profile> <profile> <id>production</id> <properties> </properties> </profile> </profiles>

2021-11-19 18:09:25    分类:技术分享    java   spring   maven   spring-profiles

How to set spring active profiles with maven profiles

I have an application with maven as a build tool. I am using maven profiles to set up different properties from different profiles. What i would like to do is that all active profiles in maven will be ported to spring active profiles as well so i can reference them in bean signature (@profile). but i am not sure how to do it. for example: consider the following maven setup <profiles> <profile> <id>profile1</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> </properties> </profile> <profile> <id>profile2</id> <properties> </properties> </profile> <profile> <id

2021-11-14 15:28:20    分类:问答    java   spring   maven   spring-profiles

从数据库加载 Spring 配置文件(loading Spring profiles from database)

问题 可以通过实现 ApplicationContextInitializer 并将 Spring 配置文件添加到环境中来动态加载 Spring 配置文件。 问题是,在我帮助的其中一个项目中,他们正在使用存储在数据库中的属性。 如何从数据库加载表示额外活动 Spring 配置文件的属性,而不是将其注入到环境中。 在 ApplicationContextInitializer 中,我不能使用 Spring bean,因为应用程序上下文尚未完全初始化。 对数据库的低级别访问是我唯一的选择吗? 回答1 Spring PropertyPlaceholderConfigurer需要使用您想要的属性文件的位置属性进行初始化。 但是,这个类也可以用java.util.Properties对象初始化。 从已弃用的项目 Spring-Modules 中,您可以在这里找到实现InitializingBean和FactoryBean Spring 类的类,这样它的行为就像一个普通的java.util.Properties对象,可以传递给PropertyPlaceholderConfigurer.setProperties()方法。 通过这种方式,您可以利用org.apache.commons.configuration.DatabaseConfiguration ,它的作用类似于 Properties

2021-11-09 18:18:21    分类:技术分享    java   spring   applicationcontext   spring-profiles

loading Spring profiles from database

One may dynamically load Spring profiles by implementing ApplicationContextInitializer and adding Spring profiles to the environment. The problem is that in one of projects I am helping in they are using properties stored in database. How to load property representing additional active Spring profiles from the database and than injecting it to the environment. In ApplicationContextInitializer I cannot use Spring beans because the application context is not yet fully initialized. Is low level access to the database my only option?

2021-11-05 20:45:10    分类:问答    java   spring   applicationcontext   spring-profiles

如何仅加载配置文件特定的属性文件并忽略默认的 application.properties?(How to load only profile specific property file and ignore default application.properties?)

问题 我有一个普通的 Spring Boot 应用程序,以及resources文件夹中的两个属性文件: 应用程序属性 com.example.prop1=value1 com.example.enableMock=true 应用程序-dev.properties com.example.prop1=value11 我有一些基于com.example.enableMock是否存在的逻辑。 问题是即使spring.profiles.active=dev并且应用程序正在获取com.example.enableMock属性,spring 也会加载这两个文件。 我如何只加载配置文件特定的属性文件? 回答1 默认情况下application.properties为任何application-*.properties加载,因为通过以下方式共享: application.properties - > application-dev.properties - > application-test.properties 如果将default为配置文件,则可以解决此问题。 将application.properties重命名为: application-default.properties

2021-10-24 08:36:14    分类:技术分享    java   spring   spring-boot   spring-profiles

How to load only profile specific property file and ignore default application.properties?

I have a normal spring boot application, and two property files in resources folder: application.properties com.example.prop1=value1 com.example.enableMock=true application-dev.properties com.example.prop1=value11 I have some logic based on whether com.example.enableMock is present or missing. Problem is spring loads both files even if spring.profiles.active=dev and the application is getting the com.example.enableMock property. How do I just load profile specific property file?

2021-10-23 05:21:05    分类:问答    java   spring   spring-boot   spring-profiles

spring maven 配置文件 - 根据编译配置文件设置属性文件(spring maven profile - set properties file based on compilation profile)

问题 我会创建一些这样的编译配置文件: 个人资料名称:dev 个人资料名称:测试型材名称:生产 在 src/main/resources 我有 3 个文件夹: 开发/文件.properties 测试/file.properties 生产/file.properties 每个文件都包含此属性的不同值: - my.prop.one - my.prop.two - my.prop.three 之后,我将在 Spring 类中设置如下内容: @Configuration @PropertySource("file:${profile_name}/file.properties") public class MyConfig{ } 我能怎么做? 回答1 请参阅 Apache Maven 资源插件/过滤和 Maven:完整参考 - 9.3。 资源过滤。 (过滤是一个坏名字,恕我直言,因为过滤器通常会过滤掉一些东西,而我们在这里执行字符串插值。但事实就是这样。) 在src/main/resources中创建一个file.properties ,其中包含${...}变量,这些变量应该根据您的环境而改变。 声明默认属性(用于dev属性)并在 POM 中激活资源过滤: <project> ... <properties> <!-- dev environment properties, for

2021-10-21 12:35:44    分类:技术分享    maven   maven-plugin   spring-profiles   maven-profiles   spring-properties

spring boot 总是使用相同的配置文件(spring boot always using the same profile)

问题 我正在使用 spring boot 1.5.2,并使用配置文件,但我发现了一件非常奇怪的事情。 我的spring boot资源文件夹是这样的: application.yml 中的配置 spring: profiles: active: @profileActive@ 应用程序-dev.yml spring: profiles: dev datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/db1 username: root password: server: port: 8080 应用程序-test.yml spring: profiles: test datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/db2 username: root password: server: port: 8081 我的 pom.xml,只包含资源部分和配置文件部分。 <!-- profile --> <profiles> <profile> <id>dev</id> <activation> <activeByDefault>true<

2021-10-10 10:27:32    分类:技术分享    maven   spring-boot   maven-profiles   spring-profiles   spring-properties

SpringBoot:无法从以下候选中找到单个主类(SpringBoot: Unable to find a single main class from the following candidates)

问题 我已经使用 Spring Initializer、嵌入式 Tomcat、Thymeleaf 模板引擎生成了一个 Spring Boot Web 应用程序。使用的技术:Spring Boot 1.4.2.RELEASE、Spring 4.3.4.RELEASE、Thymeleaf 2.1.5.RELEASE、Tomcat Embed 8.5.6 , Maven 3, Java 8 我有一个 SpringBoot 应用程序。 有这两个类: @Profile("!war") @SpringBootApplication @Import({SecurityConfig.class ,PersistenceConfig.class, ServiceConfig.class}) public class BookApplication { public static void main(String[] args) { SpringApplication.run(BookApplication.class, args); } } @Profile("war") @Import({SecurityConfig.class ,PersistenceConfig.class}) @SpringBootApplication public class BookApplicationWar

2021-10-10 01:48:57    分类:技术分享    spring   maven   spring-mvc   spring-boot   spring-profiles