Programming/Spring
[Spring] Spring Profiles
기록하는 백앤드개발자
2020. 12. 12. 08:00
반응형
ㅁ 들어가며
코드 작성 중 간단히 자바 테스트를 진행하였습니다.
@SpringBootTest를 가동시켰는데, Failed to load ApplicationContext이 발생하면서 테스트를 진행할 수 없었습니다.
스프링이 특정 value 빈을 생성하려는데, 설정 파일을 찾지 못하엿습니다.
테스트 코드에서 ActiveProfile을 어떻게 지정하는 방법을 찾으면서 그 방법에 대해서 정리해 보았다.
이 원문을 보고 정리하였습니다.
@Profile
빈을 특정 프로파일에 매핑합니다.
@Component
@Profile("dev")
public class DevDatasourceConfig
프로파일 이름을 "!dev"로 하면 dev 프로필이 활성화되지 않은 경우에만 활성화가 됩니다.
XML로 프로필 선언
Profiles은 XML로 구성 할 수도 있습니다. 근데 이 방법은 잘 안쓰게 될꺼 같습니다.
<beans profile="dev">
<bean id="devDatasourceConfig"
class="org.baeldung.profiles.DevDatasourceConfig" />
</beans>
기본적 Profile 설정방법들
WebApplicationInitializer 인터페이스를 통해 Profile설정
@Configuration
public class MyWebApplicationInitializer
implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
servletContext.setInitParameter(
"spring.profiles.active", "dev");
}
}
ConfigurableEnvironment를 통한 Profile설정
환경설정에서 직접 프로필을 설정할 수도 있습니다.
@Autowired
private ConfigurableEnvironment env;
...
env.setActiveProfiles("someProfile");
web.xml에서 설정
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/app-config.xml</param-value>
</context-param>
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>dev</param-value>
</context-param>
JVM 시스템 환경변수
-Dspring.profiles.active=dev
Unix 환경 변수
export spring_profiles_active=dev
Maven 프로필
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<spring.profiles.active>dev</spring.profiles.active>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<spring.profiles.active>prod</spring.profiles.active>
</properties>
</profile>
</profiles>
ㅁ 함께 보면 좋은 사이트
반응형