springboot:内置tomcat,提供了自动配置,搭建了spring应用的脚手架
解决问题:复杂的配置和混沌的依赖管理
1.SpringBoot入门
使用步骤:1.在pom文件中,导入springboot父工程,所有的springboot项目都要依赖该父工程
2.添加启动器依赖
1.2.配置控制器
RestController继承了ResponseBody,返回的数据类型必须是json格式的
使用引导类的方式配置springboot(不会使用上述方式进行配置)
SpringBootConfiguration其实就是Configuration注解,该注解在Spring中是声明一个java配置类
和Configuration的不同是 该注解在应用中只能包含一个。
其中SpringBootConfiguration 就相当于Spring中Configuration注解类(声明是一个注解类)
1.3.SpringBoot的四种属性注入:
四种方式都要能看懂
1.@Autowired注入(最常用)
2.构造方法注入
3.@Bean方法形参注入
4.直接在@Bean方法上使用@ConfigurationProperties(prefix="jdbc")
1.3.1.传统的jdbc配置方法
下图中的DruidDataSource需要在pom文件中进行配置
缺点:每一个成员变量读取配置文件都要进行一次注解配置
1.3.2.SpringBoot配置方法
SpringBoot启动时会默认加载application.properties文件,文件中的属性属于谁,通过前缀来区分
默认加载的文件还有application.yml
使用springboot的读取配置文件的配置类来设置参数的值
使用这种方式配置是最常用的
第二种注入参数方式:使用构造函数
第三种注入参数方式:将参数写在方法上
第四种方式(最优雅):不使用JdbcProperties类。ConfigurationProperties注解是通过set方法注入的。此方式可使用DataSource的set方法注入
必须保证返回值的set方法属性和properties中的属性名相对应。该注解的核心思想就是调用标记类的set方法get方法来注入参数
SpringBoot的默认配置文件:application.properties application.yml 两者只能有一个
2.springboot配置springmvc
导入父工程和web启动器即可
如何修改tomcat端口号(覆盖默认配置)?
1.在springboot全局属性.txt文件中搜索server.port(使用ctrl+F快捷键查找)
2.创建application.properties的配置文件,然后设置端口号
3.编写一个引导类(该引导类会扫描当前文件夹及其子文件夹所有的包和路径)
2.1.配置控制器
user为controller的全局路径
springboot中访问静态资源
默认的静态资源路径为上图内容。静态资源放置为上述路径时,就可以直接访问到
2.2.设置servlet拦截器
创建一个类继承HandlerInterceptor的接口,实现里面的方法
要加Component注解放入spring容器中
设置完拦截器需要设置拦截器的配置类,其中/**代表拦截多级路径(/*代表一级路径)
2.3. 整合JDBC设置启动器
1.设置jdbc启动器 2.配置数据库驱动依赖(mysql)
3.在application中配置连接数据库必要信息 默认驱动是mysql不需要设置
springboot中有默认的hikaricp连接池
2.4.整合mybatis框架
1.导入依赖
2.第一种是扫描注解包 第二种是扫描配置文件 两种方式任选其一
1.设置与数据库对应的实体类
2.设置与映射的配置类
由依赖包提供
导入Mapper依赖包后 注解可正常使用
配置Mapper类完毕
也可以在引导类上加Mapper的扫描注解。这样可以不使用@Mapper注解
2.5整合事务
事务所依赖的包已经通过传递依赖进入到spring容器中,报错是因为我们使用的是mapper注解,它是mybatis的注解,不是spring的注解,可通过下列方式忽视报错
使用@Transactional注解 来进行事务管理(只有增删改使用事务)
上述步骤配置完Dao层
下面使用Service层来实现业务
如果参数使用占位符的方式传递要使用@PathVariable注解
如果参数使用?的方式传递要使用RequestParam的方式进行传递
如果使用@RequestParam注解,需要加@RespnseBody注解,否则将会被认为寻找视图
上述方式无法调用queryUserById,原因:不加@ResponseBody注解 控制器就会认为该方法返回的是一个视图名称
thymeleaf
由于springboot不支持jsp 所以使用该模板
使用前需要引入该启动器
源码的默认前端页面的路径设置:
Controller传递的路径为该路径下的页面
th代表thymeleaf 和jstl 语法相似
此时不加@ResponseBody注解就是返回的视图名称