- spring boot是微服务的基础,可以快速搭建一个spring项目,spring boot可以快速开发个体微服务。
- spring cloud是协调治理全局的微服务。
- 前后端分离,就是前端由前端工作人员开发,而后端,采用微服务的形式,分为多个模块,每个模块可以由单独团队开发。
- 比如搜索功能,就可以做成一个独立的模块,也就是一个微服务,每个微服务都可以由一个专门的团队负责,不同模块之间互不影响
- 每个模块只需要提供可调用接口即可,当某个项目需要用到某一个功能时,只需使用某一微服务即可,比如,百度有搜索功能,可以使用搜索功能微服务提供的接口,淘宝有搜索功能,同样可以使用这个微服务实现
- 将某个微服务当成电磁炉,电磁炉有加热功能,当需要煮面时,可以使用这个电磁炉,当需要吃火锅时,也可以使用这个电磁炉,而煮面,火锅,是完全不同的两个项目,但使用的都是电磁炉,这就是分模快微服务,前后端分离的魅力
spring boot常用jar包依赖(供日后快速查询使用)
- spring boot父依赖:spring-boot-starter-parent
- spring boot JDBC:spring-boot-starter-jdbc
- spring boot 整合 myBatis:mybatis-spring-boot-starter
spring boot的常用注解(供日后快速查询使用)
- @SpringBootApplication:表示指定类为启动类
- @MapperScan(“mapper”):配置指定mybatis映射文件mapper
- @Configuration:表示指定类为配置类,用来实现java配置,代替xml配置
- @Bean:标识配置类中指定方法的返回值是一个spring容器的Bean对象,声明在方法上,将方法返回值加入IOC容器,代替传统< bean>标签
- @Value : 注入属性
- @PropertySource : 指定外部属性文件
- @ConfigurationProperties(prefix = “jdbc”):引用yml或properties文件中内容,需要指定文件中前缀,然后可以根据实体类或者方法(取决于声明在实体类上面还是方法上面)中的set方法,直接赋值相应配置信息,比如jdbc.username,就会调用setUserName方法赋值,没有对应属性就不赋值
- @EnableConfigurationProperties(“配置类名”):引用指定配置类
yml文件常用配置(供日后快速查询使用)
- 配置服务器端口号
- 配置debug日志
- 配置HikariCP连接池(spring数据源)
- 配置视图解析器
- 配置mybatis开启驼峰转换
- 配置mybatis找到mapper映射文件,结果集映射是为了在mapper文件中不写包名
第一章:spring boot基础
spring boot 的特点
- 无需web.xml,这也是为什么在servlet3.0中去除web.xml的原因
- 不需要配置springMVC的配置文件,前端控制器
- 集成了tomcat,无需用户自己配置
- 集成JSON,支持Rest风格url
- spring boot就是一个集成了spring各种组件的快速开发框架,可以快速搭建一个spring项目
重头搭建一个SpringBoot项目
- 创建Maven工程 :idea可以直接生成一个spring boot项目,但为了讲解,我们选择重头使用maven搭建
- 使spring boot 为父工程: 如果想使用SpringBoot必须让springBoot成为父工程,建好Maven工程后,我们可以选择自动导入所引用包(Enable Auto-import),或者选择Import Changes 仅仅导入我刚刚所做改变的包
- 导入web启动包:web启动包可以为我们快速启动一个web项目
- 建立spring boot 启动类: spring boot需要一个启动类,来启动spring boot项目,此类必须在最高级目录(保证其他类都在启动类的子文件夹下)
- 建立控制层,处理请求: 建立Controller层,处理客户端请求
为什么spring boot 可以快速搭建项目
- 首先,在早期的spring中,还没有注解的概念,所以,使用spring全部都是用xml文件配置,而当时一个项目有几十各类,相应的就要配置几十个xml文件
- 之后在spring2.0的时候,出现了注解,这时注解不是很完善,所以大多数人使用的时候,都是重要的用xml文件配置,一些简单又重复的就使用注解,二者结合使用
- 之后spring3.0,注解已经完善,这时spring推荐大家使用注解,不要再写xml了,这一出现直接导致我们的web工程甚至都不用配置web.xml了,当时的servlet3.0版本也彻底抛弃了web.xml,但是在中国并不流行,所以依然使用2.0的技术。
- 而现在已经到了spring5的时期,spring已经有了很大改变,出现了java配置,而目前大多数人,也坦然接受了java配置的真香定律,java配置简直太香了,用了以后,除了看源码,维护老项目(大多使用ssm框架开发),已经没什么理由能让我放弃spring boot,回去配置xml
- 而spring boot 就是因为配置了大量注解,这些注解会自动帮我们配置好内些必须的,复杂的配置内容
java配置
- java配置就是通过一些java类配合注解形成java配置,是在spring3.0以后的产物,在springBoot中有了更好的配置
- java配置常用注解
- @Configuration :声明一个类为配置类,代替传统xml
- @Bean : 声明在方法上,将方法返回值加入IOC容器,代替传统< bean>标签
- @Value : 注入属性
- @PropertySource : 指定外部属性文件
使用java配置的方式搞个数据源(理解什么是java配置即可,数据源spring boot集成了日本研发的目前最好的数据源连接池)
- 引入c3p0和mysql依赖
- 外部文件中配置连接信息
- 用java配置原来在xml中的内容
使用spring boot 进行配置(必须掌握三种方式)
- 配置lombok,一个工具,自动为我们生成get、set、toString等等方法配置完成需要重启idea
- 报错解决(以下过程中有这个错误,请进行如下设置)
- 为外部文件添加application前缀
- 新建一个类,存储这些里面的值
- 用到的注解介绍
- @ConfigurationProperties(“前缀”) :把外部配置文件封装成实体类,按实体类里面属性名是否和配置文件中名字一致来执行封装
- @Data :lombok工具中的注解,自动为我们生成需要的一切get,set,toString方法。
- 用到的注解介绍
- 配置数据源(方式一)
- 测试
- 第二种配置数据源方式
- 第三种配置数据源方式
使用*.yaml或*.yml文件配置属性(如果与后缀名为properties同时存在,那么配置合并,若有同名属性,按properties为准)
- 创建一个后缀名为yml的文件,其他操作都一样
配置拦截器
- 1、配置自定义拦截器,除了springMvc的配置用java配置以外,其他操作与用springMvc无二,所以,和springMvc相同,需要先定义自己的拦截器
- 2、使用java配置代替xml配置,创建一个类继承WebMvcConfigurer
- 2、添加一个拦截器
- 3、测试
配置JDBC数据源
- 使用HikariCP连接池,这是日本开发的连接池,速度极快,碾压c3p0,所以大多数厂商使用此连接池,spring默认支持此连接池,封装在JDBC模块中
- 1、添加springJDBC依赖
- 2、配置连接池
配置MyBatis整合
- 和ssm框架一样,MyBatis自己提供了整合包mybatis-spring-boot-starter
- 1、引入依赖
- 2、开启mybatis驼峰命名
- 3、找到mapper映射文件(需要说的是,单表操作的mapper,因为sql没什么可优化的,所以一般我们都使用通用mapper,多表才自己写mapper映射)
- 4、配置到指定包找类别名
- 5、得到所以mapper映射的接口
使用MyBatis的通用mapper(支持单表增删改查等操作)
- 引入依赖(引入通用mapper,mybatis整合包,和JDBC包就自动引入了,所以我们可以将上面引入的两个包删掉)
- mapper接口继承mapper类
- 使用通用mapper中的mapper扫描注解
- 指定数据库中表的名字
- 指定主键,如果主键设置了自动自增,也需指定
- 指定某些字段不作为sql语句字段名使用
- 编写service层
- 加事务
- 测试