目录
前置知识总览
前置知识路线:spring ——> spring Boot ——> spring cloud
Spring Boot与Spring Cloud——参考文章
-
Spring Boot 是 Spring 的一套快速配置脚手架,可以基于Spring Boot 快速开发单个微服务;
-
Spring Cloud是基于Spring Boot实现的;
-
Spring Boot专注于快速、方便集成的单个微服务个体,Spring Cloud关注全局的服务治理框架;
-
Spring Boot使用了约束优于配置的理念,很多集成方案已经帮你选择好了,能不配置就不配置 , Spring Cloud很大的一部分是基于Spring Boot来实现,Spring Boot可以离开Spring Cloud独立使用开发项目,但是Spring Cloud离不开Spring Boot,属于依赖的关系。
-
SpringBoot在SpringClound中起到了承上启下的作用,如果你要学习SpringCloud必须要学习SpringBoot。
Spring
Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器(框架)。以AOP与IOC为基础,为Java应用程序提供全面的基础架构的支持,用于简化企业应用程序的开发。
IoC
是什么
把原本需要程序员自己创建和维护的一大堆bean统统交由Spring管理。所有被Spring管理的、由Spring创建的、用于依赖注入的对象,就叫作一个Bean。属性不是对象创建,而是由Spring来自动进行装配。
图片来源于图片
怎么用
可以分为两步,一般使用注解(还可以使用XML与API):
- 将对象交给Spring管理
- 取出来用
注解参考文章:@ Autowired注解让 Spring 容器帮我们自动装配 bean。要想把类标识成可用于 @Autowired 注解自动装配的 bean 的类,可以采用以下注解实现:
- @Component :通用的注解,可标注任意类为 Spring 组件。如果一个 Bean 不知道属于哪个层,可以使用@Component 注解标注。
- @Repository : 对应持久层即 Dao 层,主要用于数据库相关操作。
- @Service : 对应服务层,主要涉及一些复杂的逻辑,需要用到 Dao 层。
- @Controller : 对应 Spring MVC 控制层,主要用户接受用户请求并调用 Service 层返回数据给前端页面。
- @Bean 注解使用在方法上,告诉 Spring 这个方法将会返回一个 Bean 对象,需要把返回的对象注册到 Spring 的应用上下文中。
取出来用(自动装配):@ Autowired与@ Resource
其它注解如文中所示,列子之后添加。
AoP
是什么
AoP基于动态代理的思想,将通用的业务功能与真实业务进行分离。开发主要关心核心业务,代理业务(即切面)通过切入的方式,在真实业务前中后进行执行,这样实现核心业务的增强常见的代理业务,有日志记录、权限判断等。通过切面中的切点,对切点的前中后,进行一个增强
AOP中有如下的操作术语:
- Joinpoint(连接点): 类里面可以被增强的方法,这些方法称为连接点,切点选择部分或全部的连接点;
- Aspect(切面):aspect关键字定义了一个类,这个类就是一个切面,是切点和增强结合。
- Pointcut(切点):切面内部使用了pointcut定义切点,用于捕捉的需要应用切面的方法,这些方法也称为目标方法;所谓切入点是指我们要对哪些Joinpoint进行拦截的定义
- Advice(通知/增强):通知就是那些需要在目标方法前中后执行的函数;所谓通知是指拦截到Joinpoint之后所要做的事情就是通知。
- Weaving(织入):是把增强应用到目标方法的过程
- Introduction(引介):引介是一种特殊的通知在不修改类代码的前提下,Introduction可以在运行期为
怎么用
一个例子:
@Aspect // 声明一个切面
@Component
public class MyAspect {
// 原业务方法执行前
@Before("execution(public void com.rudecrab.test.service.*.doService())")
public void methodBefore() {
System.out.println("===AspectJ 方法执行前===");
}
// 原业务方法执行后
@AfterReturning("execution(* com.rudecrab.test.service..doService(..))")
public void methodAddAfterReturning() {
System.out.println("===AspectJ 方法执行后===");
}
}
更为详细,可以参考资料
SpringBoot
是什么
Spring Boot 的目标是简化 Spring 应用和服务的创建、开发与部署,简化了配置文件,使用嵌入式 Web 服务器,含有诸多开箱即用的微服务功能,可以和 Spring Cloud 联合部署。Spring Boot 的核心思想是约定大于配置,应用只需要很少的配置即可,简化了应用开发模式。----参考资料