最近微服务比较火,小明我也学习下Spring Boot框架的使用。
首先创建一个项目,创建时选择Spring Initializr,然后Next,如下图:
填写项目信息,如下图:
下一步:
点击finish完成
OK,项目创建成功之后接下来我们来看看这个东西要怎么样去运行。首先我们看到在项目创建成功之后,在项目的根目录下会有一个artifactId+Application命名规则的入口类,如下图:
直接点击运行:
浏览器访问:
OK,至此,我们一个简单的Spring Boot工程已经创建出来了。
考虑到公司服务器使用jboss部署的,所以本地用tomcat、jboss启动一下
直接idea配置tomcat启动后浏览器访问报404错误,
问题解决:
第一步:
新建一个SpringBootStartApplication 继承自 SpringBootServletInitializer
作用:因为在外部容器部署的话,就不能依赖于Application的main函数了,而是要以类似于web.xml文件配置的方式来启动Spring应用上下文,
此时我们需要在启动类中继承SpringBootServletInitializer并实现configure方法,这个类的作用与在web.xml中配置负责初始化Spring应用上下文的监听器作用类似
【注意】:这个新建的类,与springboot的启动类是同级的
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
public class SpringBootStartApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Springboot3Application.class);
}
}
第二步:
修改pom.xml文件,让springboot内嵌的tomcat在运行时不起作用
<!-- 使用外部tomcat 启动 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!-- provided 表明该包只在编译和测试的时候使用,去除默认的tomcat -->
<scope>provided</scope>
</dependency>
pom文件修改打成war包:
<packaging>war</packaging>
启动tomcat
访问成功:
下面我们配置下jboss再启动下试试:
启动报错,这是为什么呢?
之前搭建springMVC项目的时候也踩过JBOSS的坑,我感觉我都能针对JBOSS专门写一篇部署注意事项的博客了,MVC项目踩得坑可以详见我的另一篇博客:https://blog.youkuaiyun.com/qq_19201215/article/details/98033743
这次我在WEB-INF下加上了配置文件:jboss-deployment-structure.xml
但是内容有变化:
<?xml version='1.0' encoding='UTF-8'?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.1">
<deployment>
<exclusions>
<module name="org.slf4j" />
<module name="org.slf4j.impl" />
<module name="org.apache.commons.logging" />
<module name="com.fasterxml.jackson.datatype.jackson-datatype-jdk8" />
<module name="com.fasterxml.jackson.datatype.jackson-datatype-jsr310" />
<module name="com.fasterxml.jackson.core.jackson-annotations" />
<module name="com.fasterxml.jackson.core.jackson-core" />
<module name="com.fasterxml.jackson.core.jackson-databind" />
<module name="com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider" />
<module name="org.jboss.resteasy.resteasy-jackson2-provider" />
<module name="com.alibaba.fastjson" />
<module name="javax.xml.bind.jaxb-api" />
<module name="org.apache.logging.log4j.log4j-api" />
</exclusions>
<module-alias name="deployment.springboot-3"/>
</deployment>
</jboss-deployment-structure>
然后再添加jboss-web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<!-- For context -->
<context-root>/</context-root>
</jboss-web>
重新启动成功!