SpringBoot的基本概念和开发流程
随着微服务的普及,使用springboot作为微服务开发的一部分,有必要了解其中的一些基本的概念和使用方式,
同时保证可以快速的开发和实现相应的功能。
1.开发方式:
Java中JDK开发方式:
new一个依赖类再调用类实例的方法
正转: 是程序员进行实例控制,类实例不好统一管理
Spring 开发方式 :由 Spring来负责控制对象的生命周期和对象间的关系
IOC/DI是同一个概念的不同角度描述:
01.依赖注入<Dependency Injection>:
对象 依赖于 IOC/DI容器,需要IOC/DI容器来提供对象需要的 外部资源
IOC/DI容器注入对象
02.控制反转(IOC)<Inversion of Control>
将设计好的对象交给容器控制--对象被动的等待IoC容器来创建并注入它所需要的资源
03.创建应用对象之间协作关系的行为称为装配
依赖注入的本质就是装配,装配是依赖注入的具体行为
04.Bean Spring中的所有对象称为Bean
2.Spring容器中为一个bean配置依赖注入
注入依赖对象可以采用手工装配或自动装配
1.手动装配的方式 --手动装配会覆盖自动装配
一种是在XML文件中,通过在bean节点下配置;
使用属性的Setter方法注入依赖对象 和
使用构造器方法:在配置文件中配置该类的bean,并配置构造器
另外一种:
使用注解的方式
@Autowired 是自动注入,自动从spring的上下文找到合适的bean来注入
默认按类型装配
@Resource 按照名称进行装配
2.自动装配-4种类型的自动装配
byName, byType, constructor, autodetect
<bean id="..." class="..." autowire="byType"/>
开发中常用的注入
01.XML配置
02.注解配置 @Service @Controller @Repository @Component
03.Java配置 通过 @Configuration 和 @Bean实现
04. groovy配置
2. SpringBoot
https://spring.io/
https://start.spring.io/
1.有一个入口类,入口类有一个main方法,
main方法中使用SpringApplication.run启动Spring Boot的应用项目
@SpringBootApplication 是Spring Boot项目的核心注解,主要目的是开启自动配置
main方法 是作为项目启动的入口
@SpringBootApplication(eration.class) 关闭特定的自动配置
01.可以通过 @ ImportResource来加载xml配置
02.外部配置文件 :properties文件、yaml文件 或者命令行参数
注入properties文件里的值的方式--
通过@PropertySource指明properties文件的位置
通过@Value注入值 --在Spring boot 中直接使用@Value注入即可
基于类型安全的配置方式
@ConfigurationProperties 加载properties文件内的配置,通过prefix属性指定配置前缀,location指定位置
1.pom.xml文件的相关内容
01.spring-boot-starter
starter会把所有用到的依赖都给包含进来,避免了开发者自己去引入依赖所带来的麻烦
不同的starter是为了解决不同的依赖,所以它们内部的实现可能会有很大的差异
有众多Starter
Starter通常命名为 spring-boot-starter-{name} 如 spring-boot-starter-web,
建议非官方 {name}-spring-boot-starter的格式。
要在Spring Boot中引入Web MVC的支持时,我们通常会引入这个模块spring-boot-starter-web
2.配置文件 resource
2.Spring Boot的web开发
01. spring-boot-starter-web
嵌入了Tomcat以及Spring MVC的依赖
02.数据持久层框架--
001 ORM框架
Hibernate与Mybatis
@Entity 注解指明这是一个和数据库表映射的实体类
@ID注解指明这个属性映射为数据库的主键
@Table @Column
@Query
002..Spring 的事务机制
提供API开启事务 提交事务以及发生错误的时候回滚
-- org.springframework.transaction.annotation包
PlatformTransactionManager接口
@Transaction
@EnableTransactionManager 声明开启事务支持
003.数据缓存 Cache 缓存支持
org.springframework.cache.CacheManager
org.springframework.cache.Cache
@Cacheable @CachePut @CacheEvit
切换缓存技术
01.EhCache
02.Guava
03.Redis
004.MongoDB
@Document 注解映射领域模型和MongoDB的文文档
@ID
@Field
005.批处理
Spring Batch-- @EnableBatchProcessing
03.安全控制
Authentication和Authorization
安全认证和授权
用户认证 以及请求授权
04.异步消息
消息代理
目的地 queue 和topic
JMS : org.springframework.boot.autoconfigure.jms
开发-测试与部署
测试 @Test @Ignore
部署--01.热部署 spring-boot-devtools
--02.常规部署
打包-jar 或者war
运行
03.云部署-基于Docker
3.注解
Java注解:annotation 关联信息和关联数据的途径和方法
01.按照运行机制: 源码注解--编译时注解-运行时注解RetentionPolicy.
2.按照来源:JDK自带的注解--来自第三方的注解<框架上的注解>--自定义注解
3.
JDK的注解 @ --编译时注解
Spring 的 -- @ 运行时注解
04.自定义注解
001. 定义注解
public @interface {}
JAVA基本类型 String Class 注解只有一个值的是value()
002.使用注解
@<注解名>(成员名=成员值,……)
注解(Annotation)提供了一种安全的类似注释的机制,
1.作用范围 包 类 字段 方法 方法的参数 局部变量
2.生命周期:SOURCE CLASS RUNNING
3.功能
003.解析注解:通过反射获取类、函数或者成员上的运行时注解信息,
从而实现动态控制程序运行的逻辑
1.使用类加载器加载类2.找到类上的注解isAnnotationPresent3.拿到注解实例4.找打方法上的注解
5.常见注解
001.JDK自带的注解 @Override @Deprecated @Suppvisewarnings
@Override 告诉编译器 重写
002. Spring 的注解 @Service @Autowired @Repository
Mybatis 的注解 @InserProvider @UpdateProvider @Options
4.了解相关
JSP
00.JavaBean
Bean相关配置全部是
使用xml配置文件实现的,配置文件--
使用实现接口来实现
使用注解实现bean的注入和管理-- 自动生成一个实例注入
002.MVC
@service是处于m,即业务层
@controller对应的是mvc模式中的c
相关类(框架或工具中的类)根据这些信息来决定如何使用该程序元素或改变它们的行为
4. AOP 面向切面编程
01.基于注解拦截 和 02.基于方法规则拦截
@Aspect 声明是一个切面 @PointCut @After @Before @Around
@Transactional
常见分离
水平分离:展示层 服务层 持久层
垂直分离:模块划分(订单、库存)
切面分离:功能和非功能分离,非功能集中管理
常用的场景: 权限控制、 缓存控制 、事务控制、审计日志
性能监控、 异常处理、分布式追踪
拆分-- 水平拆分和垂直拆分
水平拆分: service dao control
垂直拆分: 模块划分 订单-库存等
切面分离
@Aspect 声明切面
//定义切面 切面的构成
@Pointcut
@Before()
切面表达式
匹配类的方法 designators
匹配方法 execution()
匹配注解 @target()、 @annotation()
匹配对象target()
wildcards 通配符
operators 运算符
5.系统框架结构
dao接口层 用于放置封装好的底层数据库访问操作
service接口层 抽象业务及实现,调用dao层
control接口层
entity层
uitl 工具类
config 配置
doc 文档目录
pojo <POJO(Plain Ordinary Java Object)>;
能够做到维护数据库表记录的persisent object
完全是一个符合Java Bean规范的纯Java对象,没有增加别的属性和方法
Service
配置
配置、 接口、实现类
实现业务逻辑。将增删改查整合在一起
Control
01.业务Controller 方法实现 web
@RequestMapping("/superadmin")
统一异常处理 Handler
MVC全名是Model View Controller,
是模型(model)-视图(view)-控制器(controller)的
Entity层
Dao是数据访问层 就是用来访问数据库实现数据的持久化
Services 业务逻辑层 - BIZE层
Action是管理业务(Service)调度和管理跳转
Controller
web
6.Spring Boot 整合
1.整合mybatis方式:
01.使用XML 便于后期优化
02.使用注解
03.使用实体类
mybatis3.4.0开始加入了 @Mapper注解
2.SpringBoot整合Redis
spring-boot-starter-data-redis
01. POM文件引入redis依赖
02. 资源文件对redis进行配置
Redis数据库默认的索引 spring.redis.database
Redis服务器地址 spring.redis.host
连接池最大连接数 spring.redis.pool.max-active=1000
连接池中最大空闲连接 spring.redis.pool.max-idle=10
spring.redis.pool.min-idle=2
spring.redis.pool.max-wait
spring.redis.timeout
03.切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值
默认使用 0 号数据库 -- 数据库索引号 index
SELECT index
redis配置文件中下面的参数来控制数据库总数 database 16 #默认为16个数据库,可以自己更改
redis下,数据库是由一个整数索引标识,而不是由一个数据库名称
04.使用redis的工具类