1、创建maven项目,打包方式为jar,添加parent来统一子包的依赖。
2、导包
<parent> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-parentartifactId> <version>2.1.15.RELEASEversion> parent>
org.springframework.boot
spring-boot-starter-web
3、创建启动类(启动springmvc和tomcat的应用)
在类上加注解@SpringBootApplication
会自动扫描此包下的所有子包。
主函数中加入SpringApplication.run(APP.class);即可启动。
4、创建配置文件来配置信息,文件名为application,类型有ynl和properties两种形式,后者优先级较高
可以配置端口号
server:
port: 80
也可以配置日期格式
spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
5、在ioc容器中声明消息转换器,覆盖默认的转换器(需要导入fastjson包)
创建一个java配置类
加@Configuration来变成配置类
//配置Bean加点,方法上返回一个对象就能放入ioc了
@Bean
//消息转换器 HttpMessageConverters fastJsonMessage() { FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
//声明一个fastjson对象进行配置 FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss"); fastJsonConfig.setCharset(Charset.forName("utf-8")); fastJsonConfig.setSerializerFeatures( SerializerFeature.PrettyFormat, SerializerFeature.WriteNullListAsEmpty,
//如果是空list返回null SerializerFeature.WriteNullListAsEmpty,
//处理对象的属性为对象的情况 SerializerFeature.WriteNullStringAsEmpty,SerializerFeature.DisableCircularReferenceDetect ); Listlist =new ArrayList<>(); list.add(MediaType.APPLICATION_JSON_UTF8); fastJsonHttpMessageConverter.setSupportedMediaTypes(list); fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig); return new HttpMessageConverters(fastJsonHttpMessageConverter);
6、异常处理
有两种处理的方式
第一种是重写页面,在resource下的static下的error下的404或者500.html
第二种就是处理异常
写一个@ExceptionHandler注解,在其方法下处理异常,可以指定处理什么类型的异常,
也可以同一处理
@ExceptionHandler String exception(HttpServletRequest request,Exception e){ return "异常了"; }
如果单独存在要加一个@ControllerAdvice注解,如果是前后端分离还要加@ResponseBody
7、解决跨域问题
问题在浏览器端,为了解决跨站访问的异常,提出了同源策略。
先访问ajax在访问服务器返回到的头信息不对就会被拦截。
@Bean CorsFilter corsFilter(){ UrlBasedCorsConfigurationSource source=new UrlBasedCorsConfigurationSource(); CorsConfiguration configuration=new CorsConfiguration();
//允许所有的头信息和方法 configuration.addAllowedOrigin("*"); configuration.addAllowedHeader("*"); configuration.addAllowedMethod("*"); source.registerCorsConfiguration("/**",configuration); return new CorsFilter(source); }
8、集成mybatis
mybatis中$和#的区别:
# insert into user(username,password) values(#{username},?)
有两个问号 分别注入值,能预编译,能有效防止sql注入。
$ insert into user(username,password) values('${username}',?)
直接把值放过来,没有预编译,无法防止sql注入。值可能有脚本就会sql注入
步骤:
导包 hikari mybatis mysql
这里采用hikari数据源,需要配置数据库信息
spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/user?useUnicode=true&characterEncoding=utf8 username: root password: 123456 hikari: minimun-idle: 8 max-lifetime: 20
sqlsession自动配置,可以配置类的别名,为了方便
mybatis:
type-aliases-package: com.lyt.pojo
扫包只需要加一个@MapperScan来扫包
@MapperScan("com.lyt.dao")
再配置一下日志,方便观察sql语句等信息。
logging:
level:
com.lyt.dao: debug
dao层和service和controller层还是基于ssm框架。
搭建成功结果: