spring原理

Spring MVC框架——原理及使用

ぃ、小莉子 提交于 2020-03-17 09:24:07
核心组件     1 、 DispatcherServlet :前端控制器器,负责调度其他组件的执行,可降低不同组件之间的耦合性,是 Spring MVC 的核心模块。     2 、 Handler :处理器,完成具体的业务逻辑。     3 、 HandlerMapping : DispatcherServlet 是通过 HandlerMapping 将请求映射到不同的 Handler 。     4 、 HandlerInterceptor :处理器拦截器,是一个接口,如果需要完成一些拦截处理,可以实现该接口。     5 、 HandlerExecutionChain :处理器执行链,包括两部分内容, Handler 和 HandlerInterceptor 。     6 、 HandlerAdapter :处理器适配器,它可以完成执行业务逻辑之前的一些预处理,数据类型转换、封装等, DispatcherServlet 通过 HandlerAdapter 调用不同的 Handler 。     7 、 ModelAndView :装载了模型数据和视图信息,作为 Hanlder 的处理结果,返回给 DispatcherServlet 。     8 、 ViewResolver :视图解析器器, DispatcherServlet 通过它将逻辑视图转换成物理视图

Spring注解版学习笔记——课程整体框架

筅森魡賤 提交于 2020-03-16 11:58:48
课程主要分为容器、web两个方面的介绍。 容器: 组件注册: 组件添加,@Bean,@Configuration,@Component,@Service,@Controller,@Repository,@Import,FactoryBean 组件赋值,组件注入 容器优势: AOP 声明式事务 内部原理: bean注册到销毁的生命周期 spring的各种钩子函数 web: 来源: https://www.cnblogs.com/demo12138/p/12502770.html

Spring事务传播及数据库事务操作

不羁岁月 提交于 2020-03-15 09:27:33
从Spring 事务配置说起   先看看Spring 事务的基础配置 <aop:aspectj-autoproxy proxy-target-class="true"/>   <bean id="transactionManager"     class="org.springframework.jdbc.datasource.DataSourceTransactionManager">     <property name="dataSource" ref="dataSource"/>   </bean>   <tx:annotation-driven transaction-manager="transactionManager"/>   <!-- 配置事务传播特性-->   <tx:advice id="transactionAdvice" transaction-manager="transactionManager">     <tx:attributes>       <tx:method name="add*" propagation="REQUIRED"       rollback-for="Exception,RuntimeException,SQLException"/>       <tx:method name="remove*" propagation=

Spring扩展点之BeanFactoryPostProcessor

夙愿已清 提交于 2020-03-14 04:28:33
前言 BeanFactoryPostProcessor 接口是Spring中一个非常重要的接口,它的接口定义如下 public interface BeanFactoryPostProcessor { void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException; } 当你实现了这个接口的时候,可以对还没有初始化的bean的属性进行修改或添加 BeanFactoryPostProcessor 注册 与 BeanPostProcessor 的统一注册不同, BeanFactoryPostProcessor 的注册是留给具体的业务实现的。它的维护是在 AbstractApplicationContext 类中 private final List<BeanFactoryPostProcessor> beanFactoryPostProcessors = new ArrayList<>(); public void addBeanFactoryPostProcessor(BeanFactoryPostProcessor postProcessor) { Assert.notNull(postProcessor, "BeanFactoryPostProcessor

2020-03-12推荐阅读链接

有些话、适合烂在心里 提交于 2020-03-12 12:16:21
推荐阅读 消灭 Java 代码的“坏味道” 彻底理解Cookie,Session,Token 架构设计--互联网架构演化 值得开发者关注的 Java 8 后时代的语言特性 【原创】关于Spring中的参数校验的一点思考 Spring常见问题总结(补充版) 分布式ID生成方案总结 入职一个月的职场小白,谈谈自己这段时间的感受 Code Review最佳实践 后端开发必备的 RestFul API 知识 技术面试复习大纲 如何给老婆解释什么是RPC 干货收藏 | Java程序员必备的一些流程图 十分钟搞懂Java效率工具Lombok使用与原理 看完这篇文章,别说自己不会用Lambda表达式了! 一些有助于你拿Offer的文章 面试官:“谈谈Spring中都用到了那些设计模式?”。 来源: https://www.cnblogs.com/liboware/p/12468099.html

Spring Aware接口执行时机源码深度解读

我只是一个虾纸丫 提交于 2020-03-12 02:17:17
Spring Aware接口执行时机源码深度解读 Spring中有这样一种标记接口的存在Aware,只要是spring管理的bean实现了Aware接口,那么spring就会在bean创建的某个时机将相应的资源注入到该spring bean中,比如ApplicationContextAware, 会将spring 应用上下文ApplicationContext自动注入到bean中。 //Spring Aware标记接口 public interface Aware { } Spring内建的Aware接口 Spring 内建的Aware大概分为以下几种 Spring core 和 context的内建Aware接口 ApplicationEventPublisherAware MessageSourceAware ResourceLoaderAware BeanFactoryAware EnvironmentAware EmbeddedValueResolverAware ImportAware LoadTimeWeaverAware BeanClassLoaderAware BeanNameAware ApplicationContextAware Spring web内建的Aware接口 ServletContextAware ServletConfigAware

Spring Boot 中使用一个注解轻松将 List 转换为 Excel 下载

孤街浪徒 提交于 2020-03-11 18:18:00
科技派大星 2020-03-08 11:44:00 使用示例 @ResponseExcel(classFieldNames = {"name", "age", "address"}) @RequestMapping("/list") public List list() { return listUsers(); } 其中,使用了 ResponseExcel 注解并指明实体类的字段,轻松的将这些字段转化为了 Excel 文件下载。 原理 GitHub:https://github.com/gaoice/easyexcel-spring-boot-starter 欢迎 star 。 举报 来源: CSDN 作者: 师太,老衲把持不住了 链接: https://blog.csdn.net/u011277123/article/details/104798589

Spring Boot 中使用一个注解轻松将 List 转换为 Excel 下载

主宰稳场 提交于 2020-03-10 19:47:28
使用示例 @ResponseExcel(classFieldNames = {"name", "age", "address"}) @RequestMapping("/list") public List list() { return listUsers(); } 其中,使用了 ResponseExcel 注解并指明实体类的字段,轻松的将这些字段转化为了 Excel 文件下载。 原理 GitHub:https://github.com/gaoice/easyexcel-spring-boot-starter 欢迎 star 。 来源: https://www.cnblogs.com/zouhao/p/12458089.html

SpringMVC内嵌Tomcat9免web.xml

家住魔仙堡 提交于 2020-03-10 16:32:33
目的 有时候需要一个小web项目,而懒得单独下载tomcat运行,想直接像springboot一样打包成一个可运行jar执行,方便快捷 原理 具体原理可百度嵌入式tomcat,这里就简单介绍一下 在Tomcat8以上版本支持一个配置启动的东西,意思就是tomcat启动时会自动去扫描所有 jar 中目录为「 META-INF/services/ 」中是否有个名字是「javax.servlet.ServletContainerInitializer」的配置文件,然后根据里面内容反编译启动等等一系列操作,具体如下图配置: 如上图配置后tomcat启动时就会自动生成HelloServlet了,大概原理就这样,不过SpringMVC已经把上图中的基本配置已经搞定直接使用即可 ,具体往下看 普通Maven项目的依赖 <properties> <spring.version>5.2.3.RELEASE</spring.version> </properties> <dependencies> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> <dependency> <groupId>org

Spring 事务 转

白昼怎懂夜的黑 提交于 2020-03-09 18:02:56
出处: spring事务 1.背景   Spring提供了编程式事务和声明式事务,但由于编程性事务的侵入性,开发中普遍会使用Spring的声明式事务,下文中所说的Spring事务也都是指声明式事务。   Spring声明式事务底层是建立在AOP的基础上的,其本质就是对方法前后进行拦截,然后在目标方法之前创建或加入一个事务,在执行完目标方法之后根据执行执行情况提交或回滚事务。   声明式事务最大的优点就是不需要在业务逻辑代码中掺杂事务管理的代码,Spring事务提供两种事务管理方式:基于注解和基于XML配置,我们只需要简单的配置即可使用。   相比于编程式事务,由于声明式事务是基于AOP实现的,所以只能实现对方法的粗粒度的控制,而无法做到代码块级别的细粒度控制。   Spring事务包括5中参数,分别是:传播行为,隔离级别,是否只读,事务超时时间,回滚规则   本文分析下5种事务参数,然后对具体的传播行为给出Demo,以此给出其“细粒度”的事务实现。 2.Spring事务的5种参数 2.1 传播行为   传播行为定义了关于客户端和被调用方法的事务边界,Spring中定义了7中传播行为。 对嵌套事务的理解:   嵌套是子事务在父事务中执行,子事务是父事务的一部分,在进入子事务之前,父事务建立一个回滚点,叫save point,然后执行子事务,这个子事务也算是父事务的一部分