Spring Boot应用默认是以jar包方式运行的,Springboot默认有内置的tomcat,在启动的时候会自动的将项目发布,这样各有利弊。
优点:简单,便携
缺点:不支持jsp, 定制优化比较麻烦,需要自己编写servlet的容器工厂
Springboot支持通过简单的配置,可以将Spring Boot应用打成war包布署到外部Tomcat环境下;
- 通过idea工具创建springboot应用,注意将打包方式修改为war包;
发现创建好的项目中多了一个类:ServletInitializer extends SpringBootServletInitializer, 必须要继承SpringBootServletInitializer
- 打开pom文件查看打包方式是否为war以及tomcat的scope是否是provided;
Pom文件的打包方式必须是war, 如果创建的时候没有注意打成jar 也没有关系,在这里修改就可以了
Tomcat的<scope>provided</scope> 是固定的,加上它,打包时不会把内置的tomcat打进去
注意:spring-boot项目使用的jdk版本要和tomcat的jdk版本一致(都是1.8)
- 在main下创建缺少的webapp, WEB-INF, web.xml文件
使用工具创建的目录结构不包含传统web的结构,此时需要我们手动的添加进去,在main下新建webapp目录--
也可以使用工具中的项目结构的快捷方式创建,如下图:
将项目发布到服务器上
之前我们的idea工具已经整合了tomcat,此时我们只需要将springboot的项目发布上去即可,
使用的具体步骤和之前发布web项目的步骤是一致的,
在webapp下创建index.jsp和后台程序进行测试
注意:
1、使用了jsp我们一般是放在webapp或者WEB-INF下,可以通过配置进行自定义:
spring.mvc.view.prefix=/WEB-INF/
spring.mvc.view.suffix=.jsp
- 配置了试图解析器之后,只要返回字符串就会寻找视图对象,可以使用久违的EL了。
- 在启动的时候就不能使用springboot的启动器启动了,这样会报错,配置了外部的tomcat只能启动外部的了。
Jar包:执行springboot的主程序,启动IOC 容器,创建嵌入式的tomcat
War包:启动服务器,使用服务器来加载springboot应用,启动IOC容器
2:整合持久层
Mybatis是一个优秀的持久层框架,在现在的开发中有着广泛的运用,实际开发中springboot常常和mybatis一起配合完成一些高级的操作;
下面为大家准备了2个版本整合,注解版简单,配置文件明确,做到了SQL与代码的分离,更方便;
准备环境:
1:使用向导新建一个springboot的项目,选择web, mysql,jdbc, mybtais;
2:配置数据源spring.datasource.---; 根据自己的实际情况进行配置;
3:编写数据库和表,新建javabean; --- 以员工和部门为例
环境准备好之后就开始准备写代码进行测试。注解版操作部门相关的功能,配置文件操作员工相关的操作;
1:注解版
使用注解版操作部门相关的功能
1:新建一个部门的controller 和一个部门的Mapper接口;
2:在部门接口添加CRUD得方法,并且在方法上使用注解完成sql语句的编写,注意接口上的注解不要忘记;
3:编写部门的controller,注入mapper , 并且调用其中的方法;
4:发布项目,发起请求进行测试;
注意:
1:数据库驱动的版本;mysql5和以下使用原始版本,mysql6以上的版本是不一致的。
2:数据库和系统时差的问题,出现乱码;如果使用高版本的一定要在url后面添加serverTimezone=UTC,也可以在添加一些编码相关内容。
3:因为java代码和sql语句在一起,可维护性差,对于复杂类型的sql支持不好,在开发的时候使用的并不多。
2:配置文件版
1:新建员工的controller和接口Mapper;
2: 在接口中定义关于员工的CRUD的方法;
3:在resources文件夹中新建一个mybatis-config.xml文件和 mapper的文件夹,
mybatis-config.xml是mybatis的配置文件,mapper文件夹专门存放mapper.xml,在内部新建一个EmpMapper.xml ;
4: 在mapper.xml文件中完成CRUD的sql编写,并且指定namespace ;
5:在核心配置文件中使用mybatis.config-location和mapper-locations指定具体文件的位置,这样文件才能生效;