스프링 부트 - 대체 시작 클래스를 지정하는 방법(다중 진입점)
Spring-Boot 응용 프로그램에 대체 진입점을 추가하려고 합니다.저는 이것을 기름진 병으로 보관하는 것을 선호합니다.이것이 가능합니까?
그들의 문서에 따르면, 그 재산은loader.main
시작할 기본 클래스의 이름을 지정합니다.
나는 노력했다.java -jar MyJar.jar --loader.main=com.mycompany.AlternateMain
그러나 내 pom.xml에 지정된 start-class는 여전히 실행 중입니다(그리고 pom.xml에서 이것을 제거하면 패키징 중 오류가 발생합니다).
대신에, 나는 시도했습니다.java -cp MyJar.jar com.mycompany.AlternateMain
하지만 나는 모든 중첩된 병을 클래스 경로에 추가하는 좋은 방법을 모릅니다.
좋은 의견이라도 있나?
편집: 사용한 솔루션은 다음과 같습니다.
방금 제안한 대로 속성을 사용하도록 런처를 변경했습니다.런처.스프링 부트 메이븐 플러그인의 구성을 수정하여 이 작업을 수행했습니다.
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>${start-class}</mainClass>
<layout>ZIP</layout>
...
그<layout>ZIP</layout>
를 사용하도록 스프링 부트를 트리거합니다.
저는 지방 항아리(mvn 패키지)를 만들고 대체 메인을 다음과 같이 불렀습니다.
java -jar -Dloader.main=com.mycompany.AlternateMain MyJar.jar
도와주셔서 감사합니다!
SpringApplication 클래스로 사용할 클래스를 결정하기 위해 다른 접근 방식을 사용하고 명령줄 매개 변수를 사용했습니다.주() 메서드는 하나뿐이지만 명령줄 매개 변수를 기반으로 사용되는 구성이 서로 다른 응용 프로그램 클래스가 있습니다.
주()가 포함된 단일 클래스가 있습니다.
public static void main(String[] args) {
SpringApplication app;
if( ArrayUtils.contains(args, "--createdb")){
app = new SpringApplication(CreateDB.class);
args = (String[])ArrayUtils.add(args, "--spring.jpa.hibernate.ddl-auto=create");
} else {
app = new SpringApplication(Application.class);
}
app.setWebEnvironment(false);
app.setShowBanner(false);
app.addListeners(new ConfigurationLogger());
// launch the app
ConfigurableApplicationContext context = app.run(args);
// finished so close the context
context.close();
}
하지만 저는 두 가지 다른 Spring Application 수업이 있습니다.Application.class & CreateDB.class입니다.각 클래스는 서로 다른 클래스를 정의합니다.@ComponentScan
경로가 다를 뿐만 아니라@EnableAutoConfiguration
옵션 및 기타@Configuration
옵션들.마지막으로 명령줄 인수를 기반으로 추가 프로필/등을 프로그래밍 방식으로 활성화할지 여부를 결정할 수 있습니다.
저의 경우, 다른 시작 프로그램이 DB 스키마를 만들고 종료하기를 원하기 때문에 명령줄 매개 변수를 강제로 적용했습니다.
저는 그 재산이 당신의 경우에는 적용되지 않을 것이라고 생각합니다.3개의 다른 "런처"가 있습니다(문서로 돌아가서 확인).병을 만드는 경우에는 JarLauncher 클래스를 사용합니다.속성으로 전환하는 경우Launcher 다음에 loader.main이 유용합니다.
META-INF/Manifest.MF
Main-Class: org.springframework.boot.loader.PropertiesLauncher
저는 싱글을 갖는 것을 제안하고 싶습니다.main
그러나 스프링 프로파일(또는 구성 속성)을 사용하여 하나 이상의 "입구점"을 선택합니다.@Configuration
학생들
언급URL : https://stackoverflow.com/questions/31076911/spring-boot-how-to-specify-an-alternate-start-class-multiple-entry-points
'programing' 카테고리의 다른 글
케스트렐과 카타나의 구별 (0) | 2023.07.11 |
---|---|
판다의 여러 데이터 프레임 열에서 "별도로" 선택하는 방법은 무엇입니까? (0) | 2023.07.11 |
비동기식으로 요청을 사용하려면 어떻게 해야 합니까? (0) | 2023.07.11 |
Apache poi를 사용하여 Excel 셀에서 항상 소수점 두 개 표시 (0) | 2023.07.06 |
쿼리를 사용하여 열을 삭제하지 않고 열의 데이터 유형을 변경하는 방법은 무엇입니까? (0) | 2023.07.06 |