2008-10-04 11 views
2

main 메서드를 작성하지 않고 명령 줄 Spring 응용 프로그램을 초기화하고 시작하는 방법이 있습니다. 이러한 모든 주요 방법이 동일한 형태를 가지고있는 것처럼 그것은에,자동 시작 스프링 응용 프로그램

public static void main(final String[] args) throws Exception { 
    ApplicationContext ctx = new ClassPathXmlApplicationContext("context.xml", Boot.class); 
    FooService fooService = (FooService) ctx.getBean("fooService"); 
    fooService.bar(); 
} 

내가 그 복잡 아니지만, 누군가가 단지 명령 줄에서 context.xml을 지정하는 방법을 제공 할 수있는 방법을 발견했다 가정이나, 더 좋은 것 같다 매니페스트 파일?

여기서 목표는 실행 가능한 jar로 스프링 응용 프로그램을 간단하게 만드는 것입니다. 매니페스트에 Main-Class이라는 유틸리티 클래스를 지정할 수 있기를 바랍니다. 프로세스의 시작 지점 인 앱, 빈 및 메소드에 대한 시작점을 지정해야한다고 가정합니다.

+0

응용 프로그램을 걷어차 시작하는 라이프 사이클이 관련 콩 (init-method를) 속성을 사용

java -cp myapp.jar util.SpringMain context.xml 

: 프로그램을 시작하는 것은 단순히 그 다음의 문제입니다 당신이 성취하려는 것을 설명했습니다. Spring 애플리케이션을 실행 가능한 jar로 패키징하는 방법이 필요합니까? – noah

+0

그래, 목표는 실행 가능한 병입니다. – sblundy

+0

OK,하지만 분명히 위의 코드를 "context.xml"대신 args [0]을 사용하도록 변경할 수 있습니다. 실행 가능한 jar로 Spring 애플리케이션을 자동 패키징하는 일반적인 방법을 찾으려고하는 것 같습니다. 제 요점은 당신이 원하는 것을 아직 확신하지 못한다는 것입니다. 더 자세한 내용을 추가 할 수 있습니까? – noah

답변

6

내가 그것을 이해 질문에 대답하려고합니다 :

어떻게 같은 난 그냥 java -jar myjar.jar를 사용할 필요로 봄 구성을 포함하는 병을 패키지로?

질문에 대한 코드 스 니펫은 간단하게 작동합니다. context.xml을 매개 변수화 할 필요가 없습니다. jar 파일의 주 클래스에 대한 적절한 매니페스트 항목이있는 단일 jar에 코드와 그 의존성 (스프링 등)을 묶는 것만으로도 충분합니다.

나는 personaly 내가 그 할 사용하는 것이 maven 2를 사용하고 여기에 pom.xml입니다 단지 : 이것은 자바 코드에 대한 몇 가지 패키지 이름을 가정 한 것입니다

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.stackoverflow</groupId> 
    <artifactId>stackoverflow-autostart-spring-app</artifactId> 
    <version>0.1</version> 

    <dependencies> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring</artifactId> 
     <version>2.5.2</version> 
    </dependency> 
    </dependencies> 
    <build> 
    <plugins> 
     <plugin> 
     <artifactId>maven-jar-plugin</artifactId> 
     <configuration> 
      <archive> 
      <manifest> 
       <mainClass>com.stackoverflow.spring.autostart.Autostart</mainClass> 
      </manifest> 
      </archive> 
     </configuration> 
     </plugin> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-shade-plugin</artifactId> 
     <executions> 
      <execution> 
      <phase>package</phase> 
      <goals> 
       <goal>shade</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

, 소스 코드는 src/main/java 디렉토리와 파일에있는 src/main/resources 디렉토리의 context.xml

그래서이 pom.xml에서 몇 가지 중요한 포인트가 있습니다 :

  1. 스프링 의존성 (명백해 내가 믿는)
  2. 매니페스트 항목으로 기본 클래스를 추가 maven jar plugin의 구성,
  3. maven shade plugin은 모든 종속성/클래스를 수집하고이를 하나의 단일 항아리로 패키징하는 플러그인입니다.

mvn package을 실행하면 실행 가능한 jar 파일은 target\stackoverflow-autostart-spring-app-0.1.jar입니다.

이 코드는 모두 내 상자에서 작동하지만 여기에 zip 파일을 첨부 할 수 없다는 것을 알았습니다. 누구나 내가 할 수 있고 여기에 링크 할 수있는 장소를 알고 있습니까?

체크 아웃하려면이 질문과 관련된 코드로 git repository at github을 생성했습니다.

희망이 도움이됩니다.

+0

github에 샘플 애플리케이션을 설치해 주셔서 감사합니다. 이 모든 구성을 단계별로 진행하려고했지만 너무 가깝지 만 작동하지 않았습니다. 나는 당신의 뼈대를 사용하여 일어나서 달릴 수있었습니다. 매우 감사! –

3

예. 임의의 숫자 xmlproperties을 인수로 취하는 간단한 SpringMain을 작성하십시오. 그런 다음 (main 메서드에서)이 파일에서 응용 프로그램을 초기화 할 수 있습니다.그런 다음 당신은 그냥 ... 그것은 당신이 경우에 도움이 될 않았다

관련 문제