SpringBoot微服务是火的一塌糊涂,鄙人也不能免俗。学!!!
学习视频:尚学堂官网-百战程序员-SpringBoot
总结:SpringBoot是Spring框架的衍生,它极大的简化了Spring繁杂的配置文件。我们使用SSH或者SSM框架进行开发时,框架环境的搭建和Spring的配置花费的时间过多,所以SpringBoot的出现就是为我们解决这一问题的。
本次只学习了SpringBoot的初级课程,但通过本次学习也体会到:SpringBoot出现的好处在于简化配置文件,但是对于没有Spring配置经验的开发者来说这是不利的,由于知识的不全面而去追求极简开发是不对的。
学习内容总结如下。
截止2018.9.8日
学习了SpringBoot的基础部分,包含如下内容:
1、maven创建SpringBoot项目
1.1 创建maven项目,依赖父工程
org.springframework.boot
spring-boot-starter-parent
1.5.10.RELEASE
1.2 修改pom.xml
1.2.1 修改jdk版本
<properties>
// 注意:很多框架的版本都可以通过此方式修改:jar包名.version...
<java.version>1.7<java.version>
</properties>
1.2.2 导入SpringBootWEB启动类
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.5.10.RELEASE</version>
</dependency>
</dependencies>
1.3 SpringMVC常用的注解
1.3.1 @Controller:写在Controller上,代表该类是一个控制器
1.3.2 @RequestMapping("/path") 写在类或方法上,都代表访问路径
1.3.3 @ResponseBody 将方法的返回值封装成json格式给页面(jar包jackson)
1.4 SpringBoot启动类
1.4.1 @SpringBootApplication 写在类上
1.4.2 main方法中:Application.run(App.class,args);
2、SpringBoot整合JavaWeb:servlet、filter、listener
2.1 整合Servlet
2.1.1 使用注解@WebServlet(name="FirstServlet",urlPatterns="/first")
以上注解相当于web.xml中的这段配置:
<servlet>
<servlet-name>FirstServlet</servlet-name>
<servlet-class>com.bjsxt.servlet.FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FirstServlet</servlet-name>
<urlPattern>/firsts</urlPattern>
</servlet-mapping>
2.1.2 SpringBoot中整合Servlet的两种方式
2.1.2.1 使用注解扫描注册
@ServletComponentScan // 在SpringBoot启动时会扫描@WebServlet的注解,并将该类实例化
2.1.2.2 使用方法注册
在main中如下代码:
@Bean
public ServletRegistrationBean getServletRegistrationBean() {
ServletRegistrationBean bean = new ServletRegistrationBean(new SecondServlet());
bean.addUrlMappings("/second");
return bean;
}
2.2 filter与Servlet方式类似,因为filter本身也是Servlet
2.2.1 注解扫描注册Filter @ServletComponentScan,Filter类上也使用@WebServlet
2.2.2 方法注册
@Bean
public FilterRegistrationBean getFilterRegistrationBean() {
FilterRegistrationBean bean = new FilterRegistrationBean(new SecondFilter());
bean.addUrlPatterns("/second");
return bean;
}
2.3 Listener
2.3.1 注解扫描注册 @ServletComponentScan,Listener类上使用@WebListener
2.3.2 方法注册
@Bean
public ServletListenerRegistrationBean<SecondLinstener> getServletListenerRegistrationBean() {
ServletListenerRegistrationBean<SecondLinstener> bean = new ServletListenerRegistrationBean<SecondLinstener>(new SecondLinstener());
return bean;
}
3、SpringBoot访问静态资源
3.1 放在class/static,src/main/resources/static
3.2 放在ServletContext,src/main/webapp
4、SpringBoot使用SpringMVC做文件上传
4.1 与一般的Controller一样,在该Controller中
public String fileUpload(Multpart file) {
file...可以调用其方法
}
4.2 页面的form表单
<form action="" method="post" enctype="multipart/form-data">
<submit>
</form>
5、 SpringBoot整合jsp
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
src/main/resources/application.properties
spring.mvc.view.prefix=/WEB-INF/jsp
spring.mvc.view.suffix=.jsp
6、前端框架freemarker、thymeleaf
6.1 freemarker
src/main/resources/templates/userList.ftl
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
6.2 thymeleaf
freemarker使用ftl格式替代jsp对传统的html做增强,
thymeleaf在html的基础上做增强
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<properties>
<java.version>1.7</java.version>
// thymeleaf的高版本放开了对html严谨性要求,如<meta>没有结束标签,如果不使用高版本默认会报错
<thymeleaf.version>3.0.2.RELEASE</thymeleaf.version>
<thymeleaf-layout-dialect.version>2.0.4</thymeleaf-layout-dialect.version>
</properties>
7、SpringBoot整合SpringMVC、Mybatis持久化
7.1 SpringMVC
...
7.2 mybatis配置
Mapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bjsxt.mapper.UserMapper">
<insert id="insertUser">
insert into user(name,age) values(#{name},#{age})
</insert>
<select id="listUser" resultType="User">
select * from user;
</select>
<update id="updateUser" parameterType="User">
update user set age=#{age},name=#{name} where id=#{id}
</update>
<delete id="deleteUser" parameterType="Integer">
delete from user where id=#{id}
</delete>
</mapper>
application.properties
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql:///ssm
spring.datasource.username=root
spring.datasource.password=123
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
mybatis.type-aliases-package=com.bjsxt.pojo
使用到的注解:
@Controller SpringMVC控制器
@RequestMapping 访问路径映射
@AutoWirde 自动注入
@Service
@Transactional 事务
Controller之间的跳转: return "redirect:/user/allUser";
以上。