Итак, есть ли способ инициализировать и запустить приложение 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 в командной строке или, что еще лучше, в файле манифеста?
Цель здесь - упростить создание приложений Spring в виде исполняемых файлов jar. Я надеюсь, что смогу указать в манифесте какой-нибудь служебный класс как Main-Class. Полагаю, мне также нужно будет указать начальную точку для приложения, bean-компонент и метод, с которого начинается процесс.
Ага, цель - исполняемый jar.
Хорошо, но, очевидно, вы можете просто изменить приведенный выше код, чтобы использовать args [0] вместо context.xml. Похоже, вы пытаетесь найти общий способ автоматической упаковки приложения Любые Spring в виде исполняемого файла jar. Я хочу сказать, что я все еще не уверен, чего вы хотите. Можете добавить подробностей?
Я думал, что этот URL-адрес был полезен при ответе на этот вопрос: stackoverflow.com/questions/4787719/…




Постараюсь ответить на вопрос так, как я понимаю:
How to package a jar containing a spring configuration such as I just need to use
java -jar myjar.jar?
Фрагмент кода, который вы указали в своем вопросе, просто работает. Вам не нужно настраивать context.xml. Вам просто нужно связать свой код и его зависимости (пружину и т. д.) В одну банку с соответствующей записью манифеста для основного класса в файле jar.
Я лично использую 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>
Это предполагает некоторое имя пакета для кода Java, исходный код находится в каталоге src/main/java, а файл context.xml - в каталоге src/main/resources.
Итак, в этом pom.xml есть несколько важных моментов:
Исполняемый jar-файл будет доступен по адресу target\stackoverflow-autostart-spring-app-0.1.jar при запуске mvn package.
У меня есть этот код, который работает на моем ящике, но я только что понял, что я не могу прикрепить сюда zip-файл. Кто-нибудь знает, где я могу это сделать, и ссылку здесь?
Я создал репозиторий git на github с кодом, связанным с этим вопросом, если вы хотите его проверить.
Надеюсь это поможет.
Большое спасибо, что разместили свой образец приложения на github. Я пытался пройти через всю эту настройку и был так близок, но это не сработало. Я смог использовать твой скелет и начать работать. ОЧЕНЬ ПРИЗНАТЕЛЕН!
да. Напишите простой SpringMain, который принимает в качестве аргументов произвольное количество файлов xml и properties. Затем вы можете (в основном методе) инициализировать приложение из этих файлов. В таком случае для запуска вашей программы достаточно:
java -cp myapp.jar util.SpringMain context.xml
Затем вы используете атрибуты жизненного цикла (init-method) в своих соответствующих bean-компонентах, чтобы запустить приложение.
Вы только что сделали ... Это может помочь, если вы объясните, чего вы пытаетесь достичь. Вам нужен способ упаковки приложений Spring в виде исполняемых jar-файлов?