spring原理

Spring Cloud底层原理

会有一股神秘感。 提交于 2019-12-01 02:16:07
  概述   毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术。不过大多数讲解还停留在对Spring Cloud功能使用的层面,其底层的很多原理,很多人可能并不知晓。因此本文将通过大量的手绘图,给大家谈谈Spring Cloud微服务架构的底层原理。   实际上,Spring Cloud是一个全家桶式的技术栈,包含了很多组件。本文先从其最核心的几个组件入手,来剖析一下其底层的工作原理。也就是Eureka、Ribbon、Feign、Hystrix、Zuul这几个组件。   一、业务场景介绍   先来给大家说一个业务场景,假设咱们现在开发一个电商网站,要实现支付订单的功能,流程如下:   创建一个订单后,如果用户立刻支付了这个订单,我们需要将订单状态更新为“已支付”   扣减相应的商品库存   通知仓储中心,进行发货   给用户的这次购物增加相应的积分   针对上述流程,我们需要有订单服务、库存服务、仓储服务、积分服务。整个流程的大体思路如下:   用户针对一个订单完成支付之后,就会去找订单服务,更新订单状态   订单服务调用库存服务,完成相应功能   订单服务调用仓储服务,完成相应功能   订单服务调用积分服务,完成相应功能   至此,整个支付订单的业务流程结束   下图这张图,清晰表明了各服务间的调用过程:   好!有了业务场景之后

SSM新征程-第一个SSM

寵の児 提交于 2019-12-01 01:37:02
第一个 SSM 框架下的网页应用 SSM 指 Spring + SpringMVC + Mybatis 整合一起进行网页开发的当下流行框架, Spring 的核心是自动注入(反转控制)和切面编程,简单来说自动注入就是本来需要自己 new 对象,但是在 spring 下,它可以根据你的配置自动为你创建对象,配置方式有两种,一是 xml 文件配置,另一种是注解方式,简单方便。在初学过程中学习 xml 文件配置可以很好理解 Spring 的原理。切面编程可以很好的把应用的主要事务和周边事务分离开来,周边事务指的是日志之类的东西。怎么使用 Spring 呢?首先在一个测试类里利用 ApplicationContext.xml 文件生成一个 ApplicationContext 容器对象 , ApplicationContext.xml 文件里包含着 Spring 容器的配置信息。生成了容器之后就可以利用 getBean 方法获取对象了!这就是 Spring 的简单使用方法 SpringMVC 是众多 MVC 模式下的流行的开发模式之一,和平时最基本的 Servlet 方式开发的配置文件的区别是多了一个 SpringMVC.xml,SpringMVC 的 web.xml 配置文件只有一个 <servlet> 的解释,告诉 tomcat 所有的请求都提交到 dispatcher-Servlet

Spring Data JPA 基本使用

≯℡__Kan透↙ 提交于 2019-11-30 22:26:17
体内容 一、 创建SpringDataJPA项目 1 导入依赖 2 配置数据源信息 3 编写Dao 4 user 5 编写测试代码 二、 Spring Data JPA 的接口继承结构 三、 Spring Data JPA 的运行原理 四、 Repository 接口 1 方法名称命名规则查询 2 基于@Query 注解的查询 2.1通过 JPQL 语句查询 2.2通过 SQL 语句查询 3 通过@Query 注解完成数据更新 五、 CrudRepository 接口 六、 PagingAndSortingRepository 接口 1 分页处理 2 排序的处理 七、 JpaRepository 接口 八、 JpaSpecificationExecutor 接口 1 单条件查询 2 多条件查询 2.1给定查询条件方式一 2.2 给定查询条件方式二 3 分页 4 排序 5 分页与排序 九、 用户自定义Repository接口 十、 关联映射操作 1 一对一的关联关系 2 一对多的关联关系 3 多对多的关联关系 Spring Data JPA: Spring Data JPA 是 spring data 项目下的一个模块。提供了一套基于 JPA标准操作数据库的简化方案。底层默认的是依赖 Hibernate JPA 来实现的。 Spring Data JPA 的技术特点:

springboot实战之获取工具类bean

会有一股神秘感。 提交于 2019-11-30 13:38:15
  这次的实践经验的起因在于,在开发中,我想在工具类中使用配置文件的变量值。通常使用@value注解,这个只能在spring中管理的bean总获取。之前我也很疑惑,为什么之前的开发人员会在SpringUtil类上加入@Component注解,今天又遇到这种情况,其原因完全理解了。 @Component public class SpringUtil implements EnvironmentAware { private static Environment env; public static String getProperty(String key){ return env.getProperty(key); } @Override public void setEnvironment(Environment environment) { injectEnvironment(env); // 因为spring会创建这个接口的实现类的一个对象,所以实例方法调用静态方法,只是目前这个类我们是看不到的 } public static void injectEnvironment(Environment env){ SpringUtil.env = env; // 这其实是实例方法调用静态方法 } }   这个原理很简单,就是实例方法调用静态方法,所以还是生成了对象

web项目 配置说明 spring-config.xml springmvc-servlet.xml web.xml

瘦欲@ 提交于 2019-11-30 08:27:40
<!-- spring-config.xml 配置文件书写 1. 注解识别,驱动启动 <context:annotation-config/> 2. 项目扫包,识别除@Controller注解以外的注解,并使用@Componment的postProcesser。 <context:component-scan base-package="com.lhb.spring"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> 3. PropertyPlaceholderConfigurer: 配置文件读取,并创建到bean中. eg.${property}; dataSource 应用。 PropertyOverrideConfigure: 当然还可以使用占位符后处理器。 形如,#beanId.property=value 。 <context:property-placeholder trim-values="true" ignore-resource-not-found="true" ignore-unresolvable="true" location="classpath*:*

Spring云源生应用-中心化配置

穿精又带淫゛_ 提交于 2019-11-30 08:13:46
一切从配置开始 在 微服务架构概念索引 一文中介绍了整个云源生应用的搭建体系,后续的内容将会从Spring Cloud从技术架构,到基础设置再到团队协作方式一点一滴的记录搭建整个云服务的过程。现在从最基本的中心化配置开始介绍。 Spring基金会项目繁多、种类各异,但是他们都脱离不了一个基本的要求——基于 Spring Ioc的配置 。Spring的基础在于IoC容器,各种各样的项目都在IoC容器的基础之上扩展而来。在 设计模式与IoC 中已经介绍了IoCs的目的就是解决数据与Bean的关系、以及Bean与Bean之间的关系。 Spring Cloud 中心化配置 在单Jvm的Spring应用中各种配置文件都是通过 Profile 结合 PropertySource 进行管理,而到了 Spring Boot 则提供了大量的默认配置简化了这个过程。而在Spring Cloud中需要管理大量的节点,中心化配置的需求随之而产生。 Spring Cloud的中心化配置并没有什么特别神奇的地方,实际上就是把本该放到本地的配置文件(例如application.yml)统一放置到一个仓库中。然后用一个Web服务来管理仓库,其他微服务节点从这个Web服务获取配置文件。所以就算没有Spring Cloud Config提供这个功能

Spring Security 入门原理及实战

安稳与你 提交于 2019-11-30 06:08:59
参考博客: https://www.cnblogs.com/demingblog/p/10874753.html Spring Security 是spring项目之中的一个安全模块,可以非常方便与spring项目无缝集成。 特别是在spring boot项目中加入spring security更是十分简单, 这里就简单介绍一下入门案例和使用原理吧! 写一个简单的springboot测试例子: @Controller public class AppController { @RequestMapping("/hello") @ResponseBody String home() { return "Hello ,spring security!"; } } 在springboot中的pom.xml中引入springsecurity, 加入如下代码: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> 然后在配置文件中写入 security.basic.enabled=false spring security 默认提供了表单登录的功能。我们新建一个类

spring mvc 原理

巧了我就是萌 提交于 2019-11-30 03:26:43
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.urlPathHelper

spring boot启动原理

久未见 提交于 2019-11-30 01:50:52
@SpringBootApplication注解是Spring Boot的核心注解,它其实是一个组合注解: @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class), @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) }) public @interface SpringBootApplication { ... } 主要组合了@Configuration、@EnableAutoConfiguration、@ComponentScan SpringBootApplication的核心功能是由@EnableAutoConfiguration提供的。 @Target({ ElementType.TYPE }) @Retention(RetentionPolicy

spring事务管理

孤者浪人 提交于 2019-11-30 00:22:25
本文转载自:http://www.cnblogs.com/rushoooooo/archive/2011/08/28/2155960.html 项目使用SSH架构,现在要添加Spring事务管理功能,针对当前环境,只需要添加Spring 2.0 AOP类库即可。添加方法: 点击项目右键- > Build Path- > Add librarys: 9(V[673_ZRWHP65{U81_AW0 打开Add Libraries对话框,然后选定 MyEclipse Libraries: image 点击Next,找到Spring 2.0 aop Libraries并勾选上,点击finsh即可。 image 如果在项目里面能看到下面的库文件,说明已经安装成功。 image 事务配置 首先在/WEB-INF/applicationContext.xml添加以下内容: <!-- 配置事务管理器 --> < bean id = "transactionManager" class = "org.springframework.orm.hibernate3.HibernateTransactionManager" > < property name = "sessionFactory" > < ref bean = "mySessionFactory" /> </ property > </