我目前正在尝试学习如何使用Java EE和Spring创建网站。然而,看看Spring's REST tutorial,它解释如何创建项目并链接到spring的部分基本上提供了复制/粘贴的魔术代码,但没有解释它是如何工作的,或者我将如何找到代码块教程不是给我的。我在其他方面看到的其他教程在这方面是相似的。它有一个关于Gradle如何工作的基本教程,但这不足以理解魔术代码中发生的事情,因为他们的Rest教程中使用了大量新语法。
为了只使用JDK附带的工具(即javac)来构建Spring应用程序,我必须做些什么? Spring是否有一些隐藏的(可能是大的)jar集我可以简单地添加为依赖项然后提取到我的最终jar中,并使其工作?如果没有,我想只使用javac和其他JDK默认工具编译Spring应用程序,我该怎么办?
我已经尝试了各种Google搜索,以获取有关如何构建Spring应用程序的详细信息,但我能找到的所有内容都包含更多教程,例如我链接的教程,这些教程提供了魔术代码,我给了一些在一个上下文中工作的教程,但是没有解释它是如何做到的,或者我如何在不同的情境中修改它。
答案 0 :(得分:0)
Spring引导使用Maven
或Gradle
作为依赖关系管理工具。我对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
答案 1 :(得分:0)
我只想使用javac和其他JDK默认工具来编译Spring应用程序
简短的答案是可以的,但不值一提。您首先需要下载所有Spring jar。您还将下载其依赖的jar(检查每个jar的pom.xml文件是否具有传递依赖关系)。然后,您下载这些jar的依赖关系,依此类推,直到所有的叶子jar都没有进一步的依赖关系为止。然后,您构建一个知道多长时间的类路径字符串以传递给javac。最后,您使用相同的类路径+从javac获得的类,使用java运行类。
以上内容需要几天甚至几天的时间。与使用构建系统(例如maven)的一两分钟相比。想到的一个比喻是用汇编器编写程序:理论上可以做到,但是时间不多的人更喜欢使用高级语言。
如果您想知道特定的“魔术代码”片段,请告诉我们。