spring原理

SpringAOP源码详解

丶灬走出姿态 提交于 2019-12-03 06:35:01
SpringAOP是spring的动态代理模块。我们在spring的事务等多个方面都用到了springAOP方面的知识。 我们就以事务的动态代理原理解析来分析下springAOP的源码。 SpringAOP有几个核心概念: (1).切面Aspect: Aspect 声明类似于 Java 中的类声明,在 Aspect 中会包含着一些切入点Pointcut 以及对切入点进行相应的操作的通知Advice。 (2).连接点Joint point:表示在程序中明确定义的点,典型的包括方法调用,对类成员的访问以及异常处理程序块的执行等等,它自身还可以嵌套其它连接点jointpoint。 (3).切入点Pointcut:表示一组连接点jointpoint,这些连接点或是通过逻辑关系组合起来,或是通过通配、正则表达式等方式集中起来,它定义了相应的操作处理通知Advice将要发生的地方。 (4).通知Advice:Advice 定义了在切入点pointcut 里面定义的程序点具体要做的操作和处理,它通过 before、after 和 around 来区别是在每个切入点之前、之后还是代替执行的代码。 (5).目标对象Target:代理的目标对象,即切面要被应用到的目标对象。 (6).织入Weave:指将切面应用到目标对象,并导致代理对象创建的过程

Springboot

走远了吗. 提交于 2019-12-03 06:31:02
一、 Spring Boot 入门 1、Spring Boot 简介 简化Spring应用开发的一个框架; 整个Spring技术栈的一个大整合; J2EE开发的一站式解决方案; 2、微服务 2014,martin fowler 微服务:架构风格(服务微化) 一个应用应该是一组小型服务;可以通过HTTP的方式进行互通; 单体应用:ALL IN ONE 微服务:每一个功能元素最终都是一个可独立替换和独立升级的软件单元; 详细参照微服务文档 3、环境准备 http://www.gulixueyuan.com/ 谷粒学院 环境约束 –jdk1.8:Spring Boot 推荐jdk1.7及以上;java version "1.8.0_112" –maven3.x:maven 3.3以上版本;Apache Maven 3.3.9 –IntelliJIDEA2017:IntelliJ IDEA 2017.2.2 x64、STS –SpringBoot 1.5.9.RELEASE:1.5.9; 统一环境; 1、MAVEN设置; 给maven 的settings.xml配置文件的profiles标签添加 <profile> <id>jdk-1.8</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.8</jdk> <

spring 声明式事务原理解读

谁说我不能喝 提交于 2019-12-03 04:52:34
在Spring中,声明式事务是通过事务属性(transaction attribute)来定义的。事务属性描述了事务策略如何应用到方法上。事务属性包含5个方面: 传播行为 隔离级别 是否只读 事务超时 回滚规则 尽管Spring提供了多种声明式事务的机制,但是所有的方式都依赖这五个参数来控制如何管理事务策略。 (上述内容参考《Spring In Action》第三版)。 对于声明式事务是使用Spring提供的tx配置命名空间。其中一些声明式事务配置元素依赖于部分Spring的AOP配置元素。 下面是一个具体配置的例子: <tx:advice id="txAdviceHibernate" transaction-manager="txManagerHibernate"> <tx:attributes> <tx:method name="add*" propagation="REQUIRED" rollback-for="Exception" no-rollback-for="" /> <tx:method name="batch*" propagation="REQUIRED" rollback-for="Exception" /> <tx:method name="delete*" propagation="REQUIRED" rollback-for="Exception" />

spring源码-Aware-3.4

谁都会走 提交于 2019-12-03 04:40:06
  一、Feign受 Retrofit、JAXRS-2.0和WebSocket影响 ,采用了声明式API 接口的风格,将Java Http 客户端绑定到它的内部。 Feign 首要目的是将 Java Http 客户端调用过程变得简单。   理解的简单一点就是Feign的原理就是通过Java Http的方式访问,已经编写好的接口,实现调用的简单化、解耦化。   二、我们先写一个Feign例子看看(端口8676):   1)加入依赖:    <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <

简单模拟spring依赖注入原理

匿名 (未验证) 提交于 2019-12-03 00:40:02
接口: package org.com.test.spring; public interface PersonAction { public void sayHello(); } 实现类: package org.com.test.spring; public class PersonActionImpl implements PersonAction { @Override public void sayHello() { System.out.println( "Hello!" ); } } 方法Bean: package org.com.test.spring; public class ActionBean { PersonAction personAction; public void setPersonAction(PersonAction personAction) { this .personAction = personAction; } public void say() { personAction.sayHello(); } } 模拟测试类: package org.com.test.spring; import java.lang.reflect.InvocationTargetException; import java.lang.reflect

【Spring解读】之零:前言

匿名 (未验证) 提交于 2019-12-03 00:25:02
好久都没写过博客啦,最近打算看书研究学习Spring原理,提升一下水平 参考书籍: 《Spring技术内幕》、《Spring源码深度解析》、另外还有一些博客 所用Spring版本:4.2.3.RELEASE 开发工具: IDEA 2016 目录会持续更新: 转载请标明出处: 【Spring解读】之零:前言 文章来源: 【Spring解读】之零:前言

spring boot 实现原理

匿名 (未验证) 提交于 2019-12-03 00:22:01
前阵子在分析sprng boot的源代码,有了些感悟和心得,今天写篇博客和大家分享下。先来段题外话,在人体的血液中含有血细胞,而血细胞又大致可以分为红细胞、白细胞、血小板。它们各自有各自的用处和特点,互相协作保障人体的建康。 一. 各种Bean 如果我们把Spring想象成人体,把Bean当做细胞的话,那么正是不同种类bean的相互协作才使得spring这个大工厂正常运行,有些bean做管理工作,有些bean为其它bean服务器,有些bean生产其它bean,有些bean承载了应用的业务逻辑。根据我目前的认知,我觉得spring中的bean根据作用可以划分为“普通bean”、“容器后处理器”、“bean后处理器”、“工厂bean”、“工厂方法bean” 这五大类。 普通bean :我这里指的是普通的用户配置的实现应用业务逻辑的bean,比如Dao Bean 或 Service Bean。 容器后处理器bean :这类bean它是为Spring容器服务的,实现了容器后处理器接口。比如像PropertySourcesPlaceholderConfigurer,它的作用就是在创建bean定义对象之前,解析用户配置的非线性值(${..})。 bean后处理器 :这类bean它是为其它bean服务的,实现了bean后处理接口。这类bean可以在创建其它bean过程中的各个环节执行干预操作

Spring 讲解(二 )

匿名 (未验证) 提交于 2019-12-03 00:17:01
1、Spring 容器加载的3种方式 public class ServiceTest { public static void main(String[] args) { //Spring容器加载有3种方式 //第一种:ClassPathXmlApplicationContext ClassPath类路径加载,指的就是classes路径 //第一种:最常用,spring的配置文件路径以后就直接放在src ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); //第二种方式:文件系统路径获得配置文件【绝对路径】 //ApplicationContext context = new FileSystemXmlApplicationContext("C:\\Users\\Desktop\\IDEAWorkspace\\spring-01\\src\\com\\rookie\\beans.xml"); //第三种方式:使用BeanFactory(了解) //String path = "C:\\Users\\Desktop\\IDEAWorkspace\\spring-01\\src\\com\\rookie\\beans.xml"; //BeanFactory factory =

spring mvc 原理

匿名 (未验证) 提交于 2019-12-03 00:09:02
1.RequestMappingHandlerMapping 1.继承了InitializingBean 加载所有的 Controller.class 和 RequestMapping.class 2. WebMvcAutoConfiguration 初始化时加载interception 3.根据url 获取在RequestMappingHandlerMapping获取handlerMethod,并包装成HandlerExecutionChain,并将RequestMappingHandlerMapping中的intercepters加入到 HandlerExecutionChain 加入规则如下 protected HandlerExecutionChain getHandlerExecutionChain ( Object handler , HttpServletRequest request ) { HandlerExecutionChain chain = ( handler instanceof HandlerExecutionChain ? ( HandlerExecutionChain ) handler : new HandlerExecutionChain ( handler )); String lookupPath = this .

【分享】Spring全家桶思维笔记导图(Spring Boot+Cloud+IOC+AOP+MVC)

匿名 (未验证) 提交于 2019-12-03 00:09:02
前言 也许会有人感叹某些人的运气比较好,但是他们不曾知道对方吃过多少苦,受过多少委屈。某些时候就是需要我们用心去发现突破点,然后顺势而上,抓住机遇,那么你将会走向另外一条大道,成就另外一个全新的自我。 就目前大环境来看,面试的难度比往年高很多。一个明显的感受:今年的面试,无论一面还是二面,都很考验Java程序员的技术功底。 这个PDF是我历时一个半月从网上的论坛、博客等等方式搜集整理,覆盖面之广,一定在你的意料之外!需要的朋友可以加入爬坑之路【860113481】 不多说,PDF目录截图如下 : 一、Spring原理 二、Spring主要包 三、Spring IOC 四、Spring Bean 五、Spring AOP 六、Spring MVC 七、Spring Boot 更多相关资料由于篇幅原因就不一一展示了,有需要的朋友可以加入爬坑之路【860113481】免费领取! 转载请标明出处: 【分享】Spring全家桶思维笔记导图(Spring Boot+Cloud+IOC+AOP+MVC) 来源:51CTO 作者: Java_老男孩 链接:https://blog.51cto.com/14230003/2438922