如何使用Spring构建应用程序而不使用魔术工具?

时间:2018-03-26 09:44:43

标签: java spring spring-boot

我目前正在尝试学习如何使用Java EE和Spring创建网站。然而,看看Spring's REST tutorial,它解释如何创建项目并链接到spring的部分基本上提供了复制/粘贴的魔术代码,但没有解释它是如何工作的,或者我将如何找到代码块教程不是给我的。我在其他方面看到的其他教程在这方面是相似的。它有一个关于Gradle如何工作的基本教程,但这不足以理解魔术代码中发生的事情,因为他们的Rest教程中使用了大量新语法。

为了只使用JDK附带的工具(即javac)来构建Spring应用程序,我必须做些什么? Spring是否有一些隐藏的(可能是大的)jar集我可以简单地添加为依赖项然后提取到我的最终jar中,并使其工作?如果没有,我想只使用javac和其他JDK默认工具编译Spring应用程序,我该怎么办?

我已经尝试了各种Google搜索,以获取有关如何构建Spring应用程序的详细信息,但我能找到的所有内容都包含更多教程,例如我链接的教程,这些教程提供了魔术代码,我给了一些在一个上下文中工作的教程,但是没有解释它是如何做到的,或者我如何在不同的情境中修改它。

2 个答案:

答案 0 :(得分:0)

Spring引导使用MavenGradle作为依赖关系管理工具。我对maven更熟悉,所以会用它来回答你的问题。但在此之前,你应该有一个basic understanding of maven, how as well as why it is used。当您导航到Spring Initializer网站时,会向您提供一个表单,可用于从此初始页面中选择您的依赖项。您可以选择构建工具,编程语言和spring boot版本。选择依赖项后,可以生成spring boot项目。在IDE中打开此项目后,您可以看到下载的项目具有非常小的maven项目类型结构,其中一个主类已使用@SpringBootApplication进行注释。根据文件:

  

@SpringBootApplication注释等同于使用   @Configuration@EnableAutoConfiguration@ComponentScan   他们的默认属性

此类的main(...)简单调用SpringApplication#run,允许spring boot引导应用程序并加载ApplicationContext。现在,由于您已经拥有@ComponentScan,因此将扫描当前目录中的所有包以查找包含@Controller@RestController@Service等的弹簧组件。这些组件将被调用春天和需要的时候。 您下载的应用程序还包含POM文件。此文件定义应用程序所需的依赖项。在顶部,您有一个<parent>,它定义了spring用来存储弹簧启动时常用依赖项版本的父pom文件。例如,here是针对spring boot starter web的父pom的引用。 该应用程序可以打包为可执行的jar或战争。要执行此操作,请编辑您的pom文件以使其具有以下内容:

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.0.0.RELEASE</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

这将允许您使用命令行运行应用程序: $java -jar your-spring-app.jar。请注意,使用$mvn clean package

构建应用程序后,jar文件将存储在目标包中

答案 1 :(得分:0)

我只想使用javac和其他JDK默认工具来编译Spring应用程序

简短的答案是可以的,但不值一提。您首先需要下载所有Spring jar。您还将下载其依赖的jar(检查每个jar的pom.xml文件是否具有传递依赖关系)。然后,您下载这些jar的依赖关系,依此类推,直到所有的叶子jar都没有进一步的依赖关系为止。然后,您构建一个知道多长时间的类路径字符串以传递给javac。最后,您使用相同的类路径+从javac获得的类,使用java运行类。

以上内容需要几天甚至几天的时间。与使用构建系统(例如maven)的一两分钟相比。想到的一个比喻是用汇编器编写程序:理论上可以做到,但是时间不多的人更喜欢使用高级语言。

如果您想知道特定的“魔术代码”片段,请告诉我们。