SpringBoot简单入门
Spring是一个JavaWeb开发框架,极大的简化开发,降低了对配置文件的要求;能迅速的开发web应用,几行代码就可以开发一个http接口。
1. 创建简单项目
- 点击菜单->New->Project->Spring Initalizr 然后点击Next
- 输入如图所示两个地方参数,其他参数一般默认,然后Next
- 接着选择Web,然后勾选Spring Web即可,Next
- 最后确认一下项目名称和位置即可,点击Finish完成项目创建。
- 项目创建好后,自带一个Application,在里面填写如下内容
- 启动Application项目,测试访问。
2. 关于打包问题
通常部署SpringBoot项目可以采用两种方式:全部打包成一个jar包,或者打包成一个war包。
2.1 打包成jar包
使用IDEA的话非常简单,找到右侧侧边栏的maven图标,点击项目生命周期,然后双击install
即可,没问题应该显示BUILD SUCCESS
。
使用maven的
mvn install
一样可以,该命令需在项目根目录打开命令行窗口下运行。
该命令会在你项目的target目录下生产一个jar文件,使用命令java -jar yourjarName.jar
运行该jar文件即可启动项目。
这个jar包里面包含项目的全部文件,以及Tomcat服务器,所以无论放到哪里只要有java环境就可以运行启动项目。
2.2 打包成war包
- 修改
pom.xml
,添加打包类型和依赖
<!-- 打包成war包需加这一行-->
<packaging>war</packaging>
<!-- 打包从war包时需添加此依赖,防止打包冲突-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope> <!-- 表示只在编译和测试过程有效,生成war包不会加入-->
</dependency>
- 修改启动类文件,继承
SpringBootServletInitializer
@SpringBootApplication
public class HelloDemoApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(HelloDemoApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(HelloDemoApplication.class, args);
}
}
SpringBoot项目想运行在第三方Tomcat上必须实现
SpringBootServletInitializer
接口的configure
方法才能让外部容器运行。
- 使用maven的
clean
命令,然后使用package
命令,就会在target目录下生成.war
文件
- 将该文件复制到外部Tomcat的webapps目录下,重命名为
ROOT.war
,方便访问。
不修改为ROOT,需要加项目名称才可以访问。
- bin目录下点击
startup.bat
文件,启动项目,测试访问。
3. 关于Tomcat中文乱码问题
在tomcat的conf文件夹下,打开logging.properties
文件,将java.util.logging.ConsoleHandler.encoding = UTF-8
修改java.util.logging.ConsoleHandler.encoding = GBK
4. SpringBoot热部署
- 在settings中开启
Build project automatically
,自动构建项目功能。
- 开启动态自动编译,同时按住
Ctrl+Shift+Alt+/
,然后点击Registry
,勾选如下参数,并配置时间。
- 开启项目的热部署策略,在项目配置中选择如下选项即可。
- 项目添加热部署插件,在xml中配置如下。
<!-- 热部署依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional> <!-- true才生效 -->
<scope>runtime</scope> <!--仅在运行期有效,不参与打包-->
</dependency>
- 保险起见,浏览器f12 ✅Disable cache。
5. 关于错误处理
定义一个全局的异常处理器,然后跳转到错误页面
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(value = Exception.class)
public ModelAndView defaultErrorHandler(HttpServletRequest req,Exception e) throws Exception{
ModelAndView view = new ModelAndView();
view.addObject("exception",e);
view.addObject("url",req.getRequestURL());
view.setViewName("errorPage");
return view;
}
}