具有IDE或者IDE插件的Spring Boot Initilizr
Spring Boot Initilizr用于快速启动新的Spring Boot Maven/Gradle项目。
它生成初始项目结构并构建脚本以减少开发时间。
Spring Boot Initilizr具有以下形式:
- 具有Web界面的Spring Boot Initilizr
- 具有IDE/IDE插件的Spring Boot Initilizr
- 使用Spring Boot CLI的Spring Boot Initilizr
- 带有第三方工具的Spring Boot Initilizr
在我之前的文章中,我们已经讨论了带有Web界面的Spring Boot Initilizr。
现在,我们将讨论"如何在IDE/IDE插件中使用Spring Boot Initilizr"。
几乎所有的Java IDE都提供Spring Boot插件。
我们将使用Spring STS Suite开发所有的Spring Boot程序。
默认情况下,Spring STS Suite附带有Spring Boot插件,无需安装/配置。
具有IDE/IDE插件的Spring Boot Initilizr
请按照以下步骤使用Spring STS Suite创建一个Spring MVC Maven项目(其他IDE几乎也是如此)。
- 请从"文件>>新建"菜单中选择" Spring Stater项目"菜单选项,如下所示。
如果您不直接在"新建"菜单中对" Spring Stater Project"选项进行优化,则从" Spring"类别下的"文件>>新建>>其他"中选择此选项。
- 我们将获得以下" New Spring Stater Project"向导,以提供与项目相关的信息
- 请提供我们的Spring MVC Maven WebApplication项目详细信息,如下所示,然后单击"下一步"按钮
其中我们可以选择项目类型:Maven项目或者Gradle项目,语言:Java或者Groovy,Java版本,包装:Jar或者War等。
- 选择我们与项目相关的技术堆栈,如下所示,然后单击"完成"按钮以创建我们的新Spring Boot项目。
其中我们可以选择Spring Boot Framework Version:1.2.5以及我们所有项目所需的技术堆栈。
现在,Spring STS Suite将创建一个Maven项目,并将所有必需的Jar下载到我们的Maven本地存储库中。
如果我们观察这个项目结构pom.xml和Java Source文件,它们都类似于我们使用"带有Web界面的Spring Boot Initilizr"创建的文件。
注意:-以相同的方式,我们可以创建JAR,Gradle项目,Spring Web Services,Spring REST API,Spring Cloud等。
执行Spring Boot应用程序
我们已经使用Spring STS IDE创建了Spring Boot WebApplication。
现在该运行该应用程序并观察结果了。
- 鼠标右键单击" SpringMvcMavenIdeProjectApplication.java"文件,然后从"运行方式"菜单中选择" Spring Boot应用程序"选项以将该程序作为Spring Boot应用程序运行,如下所示
注意:-为什么我们需要运行" SpringMvcMavenIdeProjectApplication.java"程序?因为" SpringMvcMavenIdeProjectApplication.java"程序具有Java的main()方法。
我们将很快看到" SpringApplication.run()"方法的重要性。
- 当我们执行" SpringMvcMavenIdeProjectApplication.java"程序时,Spring Boot自动执行以下操作:
- 创建一个Spring MVC应用程序
- 使用默认端口号8080启动嵌入式Tomcat服务器
- 将我们的Spring MVC应用程序部署到Tomcat Sever中
- 使用" https://localhost:8080/SpringMVCMavenIDEProject"或者" https://localhost:8080/*"访问我们的Spring MVC应用程序,并观察结果
此处*表示任何URI或者上下文路径
由于我们不提供任何映射或者视图页面(例如:-JSP),因此我们看到了默认错误页面。
注意:
使用这个基本的Spring Boot WebApplication项目并根据您的项目需求对其进行增强。
我们还可以使用Spring STE IDE生成的" SpringMvcMavenIdeProjectApplicationTests.java"类来执行和测试我们的Spring Boot应用程序
鼠标右键单击" SpringMvcMavenIdeProjectApplicationTests.java"类,然后选择"运行方式>> JUnit测试"选项。
" SpringApplication"类的内部和重要性
现在,我们将讨论什么是SpringApplication?为什么我们需要这个? SpringApplication的重要性? SpringApplication的内部?
" SpringApplication"是Spring Boot API类之一。
SpringApplication类用于引导将从" main()"方法启动的Spring应用程序
示例:-Spring STS IDE生成的类:" SpringMvcMavenIdeProjectApplication"
package com.theitroad.springboot.sample; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringMvcMavenIdeProjectApplication { public static void main(String[] args) { SpringApplication.run(SpringMvcMavenIdeProjectApplication.class, args); } }
我们正在从SpringMvcMavenIdeProjectApplication类的main()方法调用SpringApplication.run()。
- SpringMvcMavenIdeProjectApplication类使用@SpringBootApplication注释进行注释
@SpringBootApplication = @配置+ @EnableAutoConfiguration + @ComponentScan
@SpringBootApplication执行以下操作:
由于有@Configuration批注,因此它将扫描@Bean方法以创建bean。
由于使用@ComponentScan批注,因此它可以进行组件扫描(Components意味着使用@ Component,@ Service,@ Repository,@ Controller等进行批注的Bean)。
由于@EnableAutoConfiguration注释,它将触发Spring Boot自动配置。
默认情况下,SpringApplication类创建" AnnotationConfigEmbeddedWebApplicationContext"实例
" AnnotationConfigEmbeddedWebApplicationContext"实例在我们的项目类路径中搜索JAR文件。
基于在Classpath上找到的JAR,它创建" EmbeddedServletContainerFactory"接口的已实现类之一的实例。
示例:默认情况下,Spring STS IDE将所有必需的Tomcat容器JAR添加到我们新创建的Spring Boot Project Classpath中。
这就是为什么" AnnotationConfigEmbeddedWebApplicationContext"实例创建" TomcatEmbeddedServletContainerFactory"类的实例的原因。
- " EmbeddedServletContainerFactory"(" JettyEmbeddedServletContainerFactory"或者" TomcatEmbeddedServletContainerFactory")用于创建" EmbeddedServletContainer"实现的实例。
示例:默认情况下,Spring STS IDE创建一个" TomcatEmbeddedServletContainerFactory"类的实例。
该工厂用于创建" TomcatEmbeddedServletContainer"类的实例。
- 当我们运行SpringMvcMavenIdeProjectApplication类main()方法时,它将调用" SpringApplication.run()"方法。
Spring STS IDE中的" SpringApplication.run()"方法
该调用用于创建" AnnotationConfigEmbeddedWebApplicationContext"。
此" AnnotationConfigEmbeddedWebApplicationContext"实例用于创建" TomcatEmbeddedServletContainerFactory"类的实例。
此" TomcatEmbeddedServletContainerFactory"用于创建" TomcatEmbeddedServletContainer"类的实例。
" TomcatEmbeddedServletContainer"实例在默认端口号8080上启动Tomcat容器,并部署我们的Spring Boot WebApplication。