- Spring框架
IOC(依赖注入) | AOP(面向切面编程) |
工厂模式 | 代理模式 |
Spring的核心 | Spring框架的重要主城部分 |
在Spring的配置文件中配置相应的bean,设置相关属性,让Spring容器来生成类的实例对象以及管理对象。Spring容器启动时会把配置文件中的bean都初始化,在需要调用的时候把初始化好的bean分配给于需要调用的bean类; 三种注入方式:构造器注入、setter方法注入、根据注解注入 | 将程序中的交叉业务逻辑封装成一个切面,然后注入到目标对象中; 有两类可以实现的技术:一是采用动态代理技术,利用截取消息的方式,对该消息记性装饰取代原有对象行为的执行;二是采用静态织入,引入特定的语法闯进“方面”,从而使得编辑器也一再编译期间植入有关“方面”的代码。 |
Spring bean的生命周期:
- 实例化bean;
- 初始化bean;
- 接受请求service;
- 销毁destroy;
spring支持的集中bean的作用域:
- singleton:默认,每个容器中只有一个bean实例,单例模式由BeanFactory自身来维护;
- prototype :为每一个bean请求提供一个实例;
- request:为每一个网络请求创建一个实例,在请求完成以后,bean会失效并被垃圾回收期回收;
- session:与request范围类似,确保每个session中有一个bean的实例,在session过期后,bean会随之失效;
- global-session:全局作用域,global-session和Portlet应用相关
Spring基于xml注入bean的几种方式:
- Set方法注入;
- 构造器注入:a、通过index设置参数的位置;b、通过type设置参数类型;
- 静态工厂注入;
- 实例工厂;
Spring框架用到的设计模式:
- 工厂模式:BeanFactory就是简单的工厂模式的体现,用来创建对象的实例;
- 单例模式:Bean默认为单例模式;
- 代理模式:Spring的AOP功能用到了JDK的动态代理和CGLIB字节码生成技术;
- 模板方法:用来解决代码重复的问题;
- 观察者模式: 定义对象键一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知被制动更新。
- SpringMVC
MVC是一种设计模式,M-Model模型,V-View视图,C-Controller控制器。
SpringMVC是MVC的开源框架,是Spring的子模块,在Spring原有基础上提供了web应用的MVC模块
组件:前端控制器DispatcherServlet,处理器映射器HandlerMapper,处理器适配器HandlerAdapter,处理器Handler,视图解析器View resolver,视图View。
工作原理:
- 用户发送请求到前端控制器;
- 前端控制器收到请求调用处理器映射器;
- 处理器映射器找到具体的处理器(根据xml配置、注解进行查找),生成处理器对象及处理器拦截器一并返回给前端控制器;
- 前端控制器调用处理器适配器;
- 处理器适配器经过适配调用具体的处理器(后端控制器);
- 处理器执行完成返回ModelAndView;
- 处理器适配器将处理器执行结果ModelAndView返回给前端控制器;
- 前端控制器将ModelAndView传给视图解析器;
- 视图解析器解析后返回具体View;
- 前端控制器根据View进行渲染视图;
- 前端控制器响应用户;
常用注解:
- @RequestMapping:处理请求url映射的注解,可用于类或方法上,用于类上表示类中所有响应请求的方法都是以改地址作为父路径;
- @RequestBody:接受http请求的json数据,将json转化为java对象;
- @ResponseBody:将controller方法返回对象转化为json对象响应给客户。
- SpringBoot:是Spring开源组织下的子项目,是Spring组件一站式解决方案,主要简化了使用Spring的难度,减省了繁重的配置,提供了各种启动器。
优点:
- 独立运行:内嵌了各种servlet容器,Tomcat、Jetty等,不再需要达成war包部署到容器中,只要打成一个可执行的jar包就能独立云顶,所有的依赖都在一个jar包中。
- 简化配置:spring-boot-starter-web启动器自动依赖其他组件,减少了maven的配置。
- 自动配置:能根据当前类路径下的类、jar包来自动配置bean。
- 无代码生成和XML配置:配置过程中无代码生成,无需XML配置文件就能完成所有配置工作,这一切都是借助于条件注解完成的,也是Spring4.x的核心功能之一。
- 应用监控:提供一系列端点可以监控服务及应用,做健康检测。
核心注解:@SpringBootApplication,启动类上的注解
- @SpringBootConfiguration:组合了@Configuration注解,实现配置文件的功能;
- @EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能:@SpringBootApplication(exculde={DataSourceAutoConfiguration.class})
- @ComponentScan:Spring组件扫描。
运行Spring Boot的方式:
- 打包命令或者放到容器中运行;
- 用Maven/Gradle插件运行;
- 直接执行main方法运行;
Starters:启动器,包含了一系列可以集成到应用里面的依赖包,可以一站式集成Spring及其他技术,不需要到处找示例代码和依赖包。
springboot常用的starter:
- spring-boot-starter-web:嵌入tomcat和web开发需要servlet与jsp支持;
- spring-boot-starter-data-jpa:数据库支持;
- spring-boot-starter-data-redis:redis数据库支持;
- spring-boot-starter-data-solr:solr支持;
- mybatis-spring-boot-starter:第三方的mybatis集成starter
实现热部署:Spring Loaded、Spring-boot-devtools
Spring Boot配置加载顺序:properties文件;YAML文件;系统环境变量;命令行参数
核心配置文件:
- application:用于Spring Boot项目的自动化配置;
- bootstrap:使用Spring Cloud Config配置中心时,需要在该配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息;一些固定的不能被覆盖的属性;一些加密/解密场景;