Java 基于环境属性启用CDI装饰器
我知道可以在“beans.xml”文件中配置Decorators,该文件嵌入到要部署的EAR中 问题是我对所有环境使用相同的EAR,并且属性集或特定配置存储在包外的某个文件夹中 我需要确定是否将使用Decorator“externalbean.xml”或类似的机制(EAR之外的东西) 有什么想法吗Java 基于环境属性启用CDI装饰器,java,jakarta-ee,jboss,cdi,Java,Jakarta Ee,Jboss,Cdi,我知道可以在“beans.xml”文件中配置Decorators,该文件嵌入到要部署的EAR中 问题是我对所有环境使用相同的EAR,并且属性集或特定配置存储在包外的某个文件夹中 我需要确定是否将使用Decorator“externalbean.xml”或类似的机制(EAR之外的东西) 有什么想法吗 非常感谢。通常情况下,这不起作用-标准的启用方法是针对每个归档方法的beans.xml,以及针对全局启用的@Priority。没有什么比得上“externalbean.xml” 尽管有一种方法可以通过
非常感谢。通常情况下,这不起作用-标准的启用方法是针对每个归档方法的
beans.xml
,以及针对全局启用的@Priority
。没有什么比得上“externalbean.xml”
尽管有一种方法可以通过扩展来启用它。您需要设置一个分机并观察。从那里你可以
使用
public List通常情况下,这不起作用-标准的启用方法是beans.xml
用于每个归档方法,而@Priority
用于全局启用。没有什么比得上“externalbean.xml”
尽管有一种方法可以通过扩展来启用它。您需要设置一个分机并观察。从那里你可以
利用public List另一个可以使用的场景是利用构建时包含和处理。
如果您事先知道哪些属性在构建时激活特定的装饰器,那么您可以使用maven资源和系统属性来定义要过滤的其他资源,因此:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompant</groupId>
<artifactId>my-project-id</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<some.kind.of.selector.properties>$basedir}/src/main/resources/development</some.kind.of.selector.properties>
</properties>
<build>
<resources>
<resource>
<directory>${some.kind.of.selector.properties}</directory>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
<profiles>
<profile>
<id>test</id>
<properties>
<some.kind.of.selector.properties>$basedir}/src/main/resources/test</some.kind.of.selector.properties>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<some.kind.of.selector.properties>$basedir}/src/main/resources/prod</some.kind.of.selector.properties>
</properties>
</profile>
</profiles>
</project>
4.0.0
com.mycompant
我的项目id
1.0.0-SNAPSHOT
战争
$basedir}/src/main/resources/development
${some.kind.of.selector.properties}
src/main/resources
测试
$basedir}/src/main/resources/test
戳
$basedir}/src/main/resources/prod
在构建时,您可以为每个环境指定不同的beans.xml
:
mvn清洁安装-Pprod
甚至直接指定属性
mvn clean install-Dsome.kind.of.selector.properties=/path/to/additional/resources
您可以使用的另一个场景是利用构建时包含和处理。
如果您事先知道哪些属性在构建时激活特定的装饰器,那么您可以使用maven资源和系统属性来定义要过滤的其他资源,因此:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompant</groupId>
<artifactId>my-project-id</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<some.kind.of.selector.properties>$basedir}/src/main/resources/development</some.kind.of.selector.properties>
</properties>
<build>
<resources>
<resource>
<directory>${some.kind.of.selector.properties}</directory>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
<profiles>
<profile>
<id>test</id>
<properties>
<some.kind.of.selector.properties>$basedir}/src/main/resources/test</some.kind.of.selector.properties>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<some.kind.of.selector.properties>$basedir}/src/main/resources/prod</some.kind.of.selector.properties>
</properties>
</profile>
</profiles>
</project>
4.0.0
com.mycompant
我的项目id
1.0.0-SNAPSHOT
战争
$basedir}/src/main/resources/development
${some.kind.of.selector.properties}
src/main/resources
测试
$basedir}/src/main/resources/test
戳
$basedir}/src/main/resources/prod
在构建时,您可以为每个环境指定不同的beans.xml
:
mvn清洁安装-Pprod
甚至直接指定属性
mvn clean install-Dsome.kind.of.selector.properties=/path/to/additional/resources