栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring&SpringBoot

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring&SpringBoot

目录

Spring(Spring framework)

Spring的来源和目的Spring的发展Spring版本说明框架与脚手架软件形态的发展Spring 框架设计

Spring framework 6大模块 Spring AOP、Spring Bean

示例代码 Spring XMLSpring Bean 配置方式演化Spring Messaging

示例代码 Spring Boot

Spring Boot的由来Spring Boot核心原理-自动装配Spring Boot 核心原理-StartSpring Boot核心原理示例代码

Spring(Spring framework) Spring的来源和目的

开发不再需要EJB、J2EE容器 Spring的发展

Spring、SpringBoot、SpringCloud的诞生 Spring版本说明

SNAPSHOT:和比较新的分支代码接近 → RC:R是发布,C是候选 →release版本、GA:general available 框架与脚手架

什么是框架、框架的特性,选定一个框架意味着什么什么是脚手架:加上了一些业务相关的通用类、方法的框架限定性框架与非限定性框架 软件形态的发展

类库→框架→脚手架→…→SaaS等 Spring 框架设计 Spring framework 6大模块

最核心的部分就是Bean、对Bean的创建和管理(context)、对Bean的增强(AOP)

Spring AOP、Spring Bean

计算机任何领域的问题都可以通过增加中间层解决AOP、IoC、DI循环依赖:属性之间的循环依赖(不会冲突)、类的构造器之间的循环依赖(会冲突)AOP的两种方式实现:JDKProxy(被代理类有接口)生成代理类、CGli(被代理类无接口)使用字节码技术生成子类proxyTargetClass=true强制使用CGlib,没有proxyTargetClass或proxyTargetClass=false均默认使用JDKProxy@Autowired、@Resource的两种注入方式的区别切面类中前置、后置、环绕增强方法的执行顺序实现AOP的其他技术由字节码技术引申出直接修改字节码的技术:Instrumentation(利用了Java Agent技术)字节码增强新工具ByteBuddySpring Bean 的核心原理:1、Spring Bean的生命周期 2、Bean的加载过程

依赖注入:为属性赋值
bean继承InitializingBean、DisposableBean接口,自定义init方法、destroy方法
bean继承BeanNameAware、ApplicationContextAware、XXXAware…获得对应信息


BeanDefinitionRegistryPostProcessor:在生成bean的过程中修改bean的成员属性 示例代码

iProjectAOP_Bean生命周期

Spring XML

描述XML文件格式定义的两种方式(检查语法等功能):1、XSD文件:XML schemas的定义(Spring默认) 2、DTD文件:文档类型定义

xmlns:xml的NameSpace,表明不同标签对应的XSD文件

xsi:schemaLocation:不同xsd类型及对应的xsd文件位置(网上远程一份,本地一份(随着jar包引入,xsd文件目录在spring.schemas文件中))

spring.schemas:key为网络URL路径,value为本地jar包中xsd文件的路径

Spring handler:处理对应NameSpace下的xsd文件定义好的那些元素,将xml中对应的那些标签属性、元素读取为dom然后通过对应的handler类转换为bean

spring.handlers:文件中保存了不同的xsd文件对应的handler

XSD过于复杂,对于自定义bean如何生成对应的xsd描述以及对应的handler:通过XmlBeans(还有一个XStream)工具插件Spring-Xbean

解析XML的技术手段和工具:1、DOM(整个XML加载到内存中,挨个解析所有节点并转换为DOM树),对应工具DOM4j 2、SAX或StAX:使用流的方式

Spring Bean 配置方式演化

@Bean 注解的方法的返回值变成Spring容器里的对象 Spring Messaging

Messaging 而非 message 是表示这是流通的消息、数据

JMS:java messaging service ,Java消息服务,J2EE的规范之一

消息应用场景:1、同步转异步 2、削峰填谷

Message Broker、server broker 消息服务器/消息中心(类似快递站)

JMS定义消息两种常见模式(均为消息队列):1、Queue(持久化存储消息) 2、Topic(默认不持久化,可选择持久化)

消费者模式(一份消息只能给一个消费者)、发布订阅模式(一份消息可以有多个相同副本给多个相应的订阅者) 示例代码

ActiveMQ示例需要先下载ActiveMQ
iProjectJMS定义消息的两种模式queue、topic
iProjectspringJms_ActiveMQ

Spring Boot Spring Boot的由来

Spring 变得臃肿且使用过于复杂,主要现在配置方面

    配置方式变多整合的各种技术组件越来越多,导致项目管理和开发变得困难

Spring Boot是Spring 的一套快速配置的脚手架,关注于自动配置、驱动配置(配置了什么组件,就会启动什么组件)
POM:Project Object Model 项目对象模型大部分Spring Boot应用只需要最少量的配置或者是零配置就能启动运行起来
创建 Spring Boot项目方式:1、通过Start.Spring.io网址 2、通过Idea Spring Boot核心原理-自动装配

@SpringBootApplication 是SpringBoot 应用标注在某个类上说明这个类是 SpringBoot 的主配置类,SpringBoot 就会运行这个类的 main 方法来启动 SpringBoot 项目@SpringBootConfiguration@EnableAutoConfiguration@AutoConfigurationPackage@import({xxx.class})@import({AutoConfigurationimportSelector.class})加载所有 meta-INF/spring.factories 中存在的配置类@ComponentScan@EnableConfigurationPropertise(XXX.class)在使用该注解的类中通过@Autoweird实现将XXX.class注入到当前的类的成员属性中,进而可以得到XXX.class的成员属性值,XXX.class使用了注解@ConfigurationPropertise(prefix=’hhh’),那么XXX.class的成员属性m就可以通过配置文件为hhh.m赋值条件化自动配置:
@ConditionalOnBean、@ConditionalOnClass、@ConditionalOnMissingBean、@ConditionalOnProperty、@ConditionalOnResource、@ConditionalOnSingleCandidate、@ConditionalOnWebApplicationspring.factories:包含了启动类启动时需要自动装载到容器中的各种类,以key-value键值对形式存放,key为自动装载的类的类别,value为需要自动装载的类的全类名 Spring Boot 核心原理-Start

基于各种技术组件的Start,比如Web、JDBC、MyBatis的Start主要是为了整合各类技术组件到Spring 体系应用中各种技术组件的Start一般需要包含spring.provides(把当前的Start的名字写进去)、spring.factories(自定义 Configuration 类的全类名作为value写在了spring.factories中)、additional-XXX-metadata(可选,类似xsd作用的json格式文件,主要针对配置文件关于对应技术组件的配置是否正确以及自动提示)、自定义 Configuration 类(通过spring.factories,是这个技术组件被Spring Boot的start类整合启动起来的入口点)
Spring Boot核心原理示例代码

iProjectAutoStart

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/782779.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号