programing

Spring 3.1 디폴트프로파일

kingscode 2022. 12. 28. 21:56
반응형

Spring 3.1 디폴트프로파일

내 어플리케이션에서는 콩에 주석을 달았다.@Profile("prod")그리고.@Profile("demo")첫 번째는 실전 DB에 접속하는 콩에 사용되며 두 번째는 가짜 DB를 사용하는 콩에 주석을 붙입니다.HashMap개발 시간을 단축할 수 있습니다.

디폴트 프로파일이 필요합니다("prod"something-something에 의해 덮어쓰지 않으면 항상 사용됩니다.

내 안에 있는 게 완벽할 거야web.xml:

<context-param>
     <param-name>spring.profiles.active</param-name>
     <param-value>prod</param-value>
</context-param>

그리고 나서 이걸 덮어쓰고-Dspring.profiles.active="demo"제가 할 수 있는 일:

mvn jetty:run -Dspring.profiles.active="demo". 

하지만 슬프게도 이것은 효과가 없다.내가 그걸 어떻게 얻겠어?설정-Dspring.profiles.active="prod"선택할 수 없습니다.

web.xml에서 운영 환경을 기본 프로파일로 정의합니다.

<context-param>
   <param-name>spring.profiles.default</param-name>
   <param-value>prod</param-value>
</context-param>

다른 프로파일을 사용하고 싶은 경우 시스템 속성으로 전달합니다.

mvn -Dspring.profiles.active="demo" jetty:run

제 경험상으로는

@Profile("default")

bean은 다른 프로파일이 식별되지 않은 경우에만 컨텍스트에 추가됩니다.다른 프로파일(예:-Dspring.profiles.active="demo"이 프로파일은 무시됩니다.

같은 문제가 있지만 Web Application을 사용합니다.Servlet Context를 프로그래밍 방식으로 설정하기 위한 이니셜라이저(Servlet 3.0+).다음 작업을 수행합니다.

public class WebAppInitializer implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext sc) throws ServletException {
        // Create the 'root' Spring application context
        final AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
        // Default active profiles can be overridden by the environment variable 'SPRING_PROFILES_ACTIVE'
        rootContext.getEnvironment().setDefaultProfiles("prod");
        rootContext.register(AppConfig.class);

        // Manage the lifecycle of the root application context
        sc.addListener(new ContextLoaderListener(rootContext));
    }
}

또한 PROD 프로파일을 삭제하고 @Profile("!demo")을 사용할 수도 있습니다.

이미 게시된 @andih 기본 프로덕션 프로필 설정

maven jetty 플러그인의 기본 프로파일을 설정하는 가장 쉬운 방법은 플러그인 구성에 다음 요소를 포함하는 것입니다.

<plugin>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-maven-plugin</artifactId>
    <configuration>
        <systemProperties>
            <systemProperty>
                <name>spring.profiles.active</name>
                <value>demo</value>
            </systemProperty>
        </systemProperties>
    </configuration>
</plugin>

스프링은 액티브한 프로파일을 판별할 때 다음 두 가지 속성을 제공합니다.

  • spring.profiles.active

그리고.

  • spring.profiles.default

한다면spring.profiles.active설정되어 있는 경우, 그 값에 의해서 액티브한 프로파일은 이 값에 따라 달라집니다.하지만 만약spring.profiles.active아직 정해지지 않았으니 봄은spring.profiles.default.

둘 다 아닌 경우spring.profiles.active도 아니다spring.profiles.default이 설정되면 액티브프로파일은 생성되지 않고 프로파일로 정의되지 않은 콩만 생성됩니다.프로파일을 지정하지 않은 모든 콩은default프로파일링 합니다.

web.xml을 필터링된 리소스로 설정하고 이 값을 maven 프로파일 설정에서 maven으로 채울 수 있습니다.이것이 우리가 하는 일입니다.

pom filter all resources (${} 마킹이 없는 경우 taht를 수행할 수 있습니다)

<webResources>
    <resource>
        <directory>src/main/webapp</directory>
        <filtering>true</filtering>
    </resource>
</webResources>

in web.xml put

<context-param>
     <param-name>spring.profiles.active</param-name>
     <param-value>${spring.prfile}</param-value>
</context-param>

폼에서 maven 프로파일 생성

<profiles>
    <profile>
        <id>DEFAULT</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <spring.profile>prod</spring.profile>
        </properties>
    <profile>
    <profile>
        <id>DEMO</id>
        <properties>
            <spring.profile>demo</spring.profile>
        </properties>
    <profile>
</profiles>

이제 사용할 수 있습니다.

mvn jetty:run -P DEMO

또는 간단히 말하면-P DEMO어떤 명령이라도 하면

언급URL : https://stackoverflow.com/questions/10041410/default-profile-in-spring-3-1

반응형