Java 弹簧轮廓组

Java 弹簧轮廓组,java,spring,profiles,spring-profiles,Java,Spring,Profiles,Spring Profiles,我有一个应用程序,我可以为它指定要在其上运行的配置文件。 但我还想将这些配置文件分为Credentail、应用程序性能、内存打印、应用程序行为等。 我可以运行以下配置文件 -Dspring.profiles.active=production,cached-local,db-connection-pooled... 但我更愿意将其初始化为 -Dspring.profiles.active=production,super-fast #the above activates method lev

我有一个应用程序,我可以为它指定要在其上运行的配置文件。 但我还想将这些配置文件分为Credentail、应用程序性能、内存打印、应用程序行为等。 我可以运行以下配置文件

-Dspring.profiles.active=production,cached-local,db-connection-pooled...
但我更愿意将其初始化为

-Dspring.profiles.active=production,super-fast
#the above activates method level caches, db connection pooling etc
#super-fast triggered activation of cached-local, db-connection-pooled profiles

这可以在不编写任何自定义代码的情况下实现吗 . 即使我可以从属性文件或SpringXMLConfig内部加载这些,我也可以。
我在spring 3.1上使用的是仅xml配置。

如果没有自定义代码,我不知道有什么方法可以实现这一点,因为自定义代码会在
ConfigurableEnvironment
中操作活动概要文件

我们试图在安全框架中实现与权限vs.角色(权限组)相同的间接模式,但由于这不是现成的,因此我不得不解决它

我将我的配置文件保持为常规配置文件,例如,在您的情况下,生产和超级快速,对于每个对这些配置文件敏感的bean,我设置了正确的@Profile。为了简化重构,我使用了两种技术

  • 为每个配置文件创建元注释,例如
    @Production
    @SuperFast
    ,并将配置文件名称设置为公共常量,例如
    Production.profile\u name=“Production”
  • 标记任何bean的概要文件时,如果新的元注释仅适用于一个概要文件,请使用它;如果新的元注释适用于多个概要文件,请使用
    @profile({Production.profile\u NAME,…})
    。必须这样做,因为不能将两个概要文件元注释应用于同一个bean
  • 比如说,

    @Profile(Production.PROFILE_NAME)
    public @interface Production {
    
        public static String PROFILE_NAME = "production";
    }
    

    所有这些的要点是,如果您需要快速了解或更改正在引入的bean,您现在可以使用IDE查找
    @Production
    Production.PROFILE\u NAME
    的用法

    你有什么进展吗?我正试图想出一个解决办法来做类似的事情。对不起,耽搁了。不,我还没有找到解决办法。如果有,请告诉我。
    @Profile(Production.PROFILE_NAME)
    public @interface Production {
    
        public static String PROFILE_NAME = "production";
    }