Spring
文章平均质量分 71
奔跑-起点
这个作者很懒,什么都没留下…
展开
-
Spring中的两种AOP织入方式
Spring实现aop是依赖两种技术,一种是jdk动态代理,被切入的类需要实现接口,如果在配置文件中不指明实现什么接口,spring会自动搜索其实现接口并织入advice,别一种是借助动态修改类的技术,使用cglib动态地扩展类来实现切面,cglib可以实现字节码级地修改,执行效率比jdk动态代理要高,但创建实例时没有前者快.默认情况下,使用jdk动态代理,通过下面的配置,可以显式指明原创 2016-07-21 09:28:40 · 2485 阅读 · 0 评论 -
Spring Cloud构建微服务架构(七)消息总线(续:Kafka)
Spring Cloud Bus除了支持RabbitMQ的自动化配置之外,还支持现在被广泛应用的Kafka。在本文中,我们将搭建一个Kafka的本地环境,并通过它来尝试使用Spring Cloud Bus对Kafka的支持,实现消息总线的功能。由于本文会以之前Rabbit的实现作为基础来修改,所以先阅读《Spring Cloud构建微服务架构(七)消息总线》有助于理解本文。Kafka简转载 2016-12-22 10:25:22 · 1478 阅读 · 0 评论 -
正确实现用spring扫描自定义的annotation
今天做一个RPC远程调用框架遇到一个Spring的问题,下面是发现问题和解决方案,仅供参考。在使用spring时,有时候有会有一些自定义annotation的需求,比如一些Listener的回调函数。比如:@Servicepublic class MyService { @MyListener public void onMessage(Message m原创 2017-01-05 14:54:20 · 920 阅读 · 0 评论 -
Spring Cloud源码分析(一)Eureka
看过之前文章的朋友们,相信已经对Eureka的运行机制已经有了一定的了解。为了更深入的理解它的运作和配置,下面我们结合源码来分别看看服务端和客户端的通信行为是如何实现的。另外写这篇文章,还有一个目的,还是希望鼓励大家能够学会学习和研究的方法,由于目前Spring Cloud的中文资料并不多,并不是大部分的问题都能找到现成的答案,所以其实很多问题给出一个科学而慎重的解答也都是花费研究者不少精力的。转载 2016-12-20 18:30:12 · 1094 阅读 · 0 评论 -
Spring Cloud源码分析(二)Ribbon
断断续续看Ribbon的源码差不多也有7-8天了,总算告一段落。本文记录了这些天对源码的阅读过程与一些分析理解,如有不对还请指出。友情提示:本文较长,请选择一个较为舒适的姿势来阅读在之前介绍使用Ribbon进行服务消费的时候,我们用到了RestTemplate,但是熟悉Spring的同学们是否产生过这样的疑问:RestTemplate不是Spring自己就有的吗?跟Ribbon转载 2016-12-20 18:32:04 · 1144 阅读 · 1 评论 -
Spring Cloud构建微服务架构(三)断路器
在微服务架构中,我们将系统拆分成了一个个的服务单元,各单元间通过服务注册与订阅的方式互相依赖。由于每个单元都在不同的进程中运行,依赖通过远程调用的方式执行,这样就有可能因为网络原因或是依赖服务自身问题出现调用故障或延迟,而这些问题会直接导致调用方的对外服务也出现延迟,若此时调用方的请求不断增加,最后就会出现因等待出现故障的依赖方响应而形成任务积压,最终导致自身服务的瘫痪。举个例子,在一个电转载 2016-12-20 18:33:01 · 488 阅读 · 0 评论 -
JDK和CGLIB生成动态代理类的区别
关于动态代理和静态代理当一个对象(客户端)不能或者不想直接引用另一个对象(目标对象),这时可以应用代理模式在这两者之间构建一个桥梁--代理对象。按照代理对象的创建时期不同,可以分为两种:静态代理:事先写好代理对象类,在程序发布前就已经存在了;动态代理:应用程序发布后,通过动态创建代理对象。静态代理其实就是一个典型的代理模式实现,在代理类中包装一个被代理对象,原创 2017-02-17 11:41:14 · 749 阅读 · 0 评论 -
自定义RPC通讯框架,实现dubbo远程RPC服务治理功能
写这篇文章的时候,dubbo已经出了很久了,这个是在dubbo开源之前由我负责设计开发的一套RPC调用框架,满足我们公司的业务增长需要。一下是我们的方案架构图:《具体的代码有机会会在我的GitHub上进行开源.》原创 2017-01-06 10:31:57 · 1213 阅读 · 0 评论 -
Spring Boot 集成Shiro和CAS
请大家在看本文之前,先了解如下知识点: 1、Shiro 是什么?怎么用? 2、Cas 是什么?怎么用? 3、最好有spring基础可以先看看这两篇文章,按照这2篇文章的内容做一遍: Spring Boot Shiro 权限管理 CAS单点登录首先看一下下面这张图: 第一个流程是单纯使用Shiro的流程。 第二个流程是单纯使用Cas的流程。 第三个图是原创 2017-07-20 18:52:01 · 591 阅读 · 0 评论 -
ehcache 与spring相结合超时自动刷新缓存的框架搭建
我们在做J2EE工程中经常会碰到一些常量或者是一些不太用的数据。 这部分数据我们希望是把它放到一个共同的地方,然后大家都能去调用,而不用频繁调用数据库以提高web访问的效率。 这样的东西就是缓存(cache),对于缓存的正确理解是一块不太变动的数据,但是这块数据偶尔或者周期新会被变动的,如: 地区,分公司,省市。。。。。。 当系统一开始运行时,我们可以把一批静态的数原创 2017-07-21 17:34:20 · 717 阅读 · 0 评论 -
springBoot注解大全
一、注解(annotations)列表 @SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文。@Configuration 等同于spring的XML配置文件;使用J原创 2017-08-02 10:21:20 · 716 阅读 · 0 评论 -
可靠消息服务在支付领域的应用
可靠消息服务在支付领域的应用原创 2017-08-09 11:27:53 · 529 阅读 · 0 评论 -
Spring中@Autowired注解、@Resource注解的区别
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>细节>>>>>>>>>>>>>>>>>>>>>>>>>>>> byName byTypespring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource、@PostConstruct以及@PreDestroy。 @Resource的作用相当于@Autowired,只原创 2017-08-18 10:58:57 · 303 阅读 · 0 评论 -
Spring Cloud构建微服务架构(七)消息总线
先回顾一下,在之前的Spring Cloud Config的介绍中,我们还留了一个悬念:如何实现对配置信息的实时更新。虽然,我们已经能够通过/refresh接口和Git仓库的Web Hook来实现Git仓库中的内容修改触发应用程序的属性更新。但是,若所有触发操作均需要我们手工去维护Web Hook中的应用位置的话,这随着系统的不断扩张,会变的越来越难以维护,而消息代理中间件是解决该问题最为合适转载 2016-12-22 10:24:22 · 848 阅读 · 0 评论 -
Spring Cloud构建微服务架构(六)高可用服务注册中心
近期因工作原因减缓了更新频率,同时为了把Spring Cloud中文社区搭建起来也费了不少时间,几乎每天都在挤牙膏般的凑时间出来做一些有意义的事。未能按原计划更新博文,在此对持续关注我博客的朋友们深表歉意。之前在写Spring Cloud系列文章的时候,列过一个较粗的计划,现在由于收到不少反馈和问题,因此准备做一些调整,先将一些大家关注较为集中的点拉出来写一些内容。今天这篇主要转载 2016-12-21 17:12:14 · 554 阅读 · 0 评论 -
1.Spring实现数据库的读写分离
现在大型的电子商务系统,在数据库层面大都采用读写分离技术,就是一个Master数据库,多个Slave数据库。Master库负责数据更新和实时数据查询,Slave库当然负责非实时数据查询。因为在实际的应用中,数据库都是读多写少(读取数据的频率高,更新数据的频率相对较少),而读取数据通常耗时比较长,占用数据库服务器的CPU较多,从而影响用户体验。我们通常的做法就是把查询从主库中抽取出来,采用多个从库,原创 2016-07-21 10:34:44 · 5072 阅读 · 0 评论 -
Spring安全权限管理(Spring Security的配置使用)
1.Spring Security简要介绍Spring Security以前叫做acegi,是后来才成为Spring的一个子项目,也是目前最为流行的一个安全权限管理框架,它与Spring紧密结合在一起。Spring Security关注的重点是在企业应用安全层为您提供服务,你将发现业务问题领域存在着各式各样的需求。银行系统跟电子商务应用就有很大的不同。电子商务系统与企业销售自动化工原创 2016-08-13 15:00:04 · 1423 阅读 · 0 评论 -
BCD码和ASCII码的区别
通常ASCII码用来在计算机种表示各种字符和字母,而BCD码则用来方便的表示十进制数两者没有必然的联系~~BCD码通常是指8421码就是将十进制的数以8421的形式展开成二进制,大家知道十进制是0~9十个数组成,这十个数每个数都有自己的8421码 bcd码是四位二进制码, 也就是将十进制的数字转化为二进制, 但是和普通的转化有一点不同, 每一个十进制的数字0-原创 2016-10-13 10:52:57 · 5420 阅读 · 0 评论 -
深入Spring:自定义注解加载和使用
前言在工作中经常使用Spring的相关框架,免不了去看一下Spring的实现方法,了解一下Spring内部的处理逻辑。特别是开发Web应用时,我们会频繁的定义@Controller,@Service等JavaBean组件,通过注解,Spring自动扫描加载了这些组件,并提供相关的服务。 Spring是如何读取注解信息,并注入到bean容器中的,本文就是通过嵌入Spring的Bean加载原创 2016-10-27 18:51:20 · 3209 阅读 · 0 评论 -
Spring Boot---Web应用返回jsp页面
直接使用SpringMVC时配置访问jsp页面时很容易的事,但是由于Spring Boot使用内嵌的servlet容器,所以对jsp的支持不是很好,而且也不建议使用jsp,但是为了满足这种返回jsp页面的需求同时又想享受Spring Boot免去各种配置的麻烦,经本屌丝各种试验,有两种方法可以供参考,在说明以下两种方法前首先声明所用的依赖如下:org.apache.tomcat.emb原创 2016-10-28 16:39:03 · 960 阅读 · 1 评论 -
SpringMVC + security模块 框架整合详解
最近整理一个二手后台管理项目,整体大体可分为 : Springmvc + mybatis + tiles + easyui + security 这几个模块,再用maven做管理。刚拿到手里面东西实在太多,所以老大让重新整一个,只挑出骨架。不可否认,架构整体规划得还是很好的,尤其是前端界面用tiles+easyui ,开发很高效!其实,之前虽然听说过security,但做过的项目都没用过secur转载 2016-12-12 14:03:14 · 1362 阅读 · 0 评论 -
Spring Cloud构建微服务架构(四)分布式配置中心
Spring Cloud Config为服务端和客户端提供了分布式系统的外部化配置支持。配置服务器为各应用的所有环境提供了一个中心化的外部配置。它实现了对服务端和客户端对Spring Environment和PropertySource抽象的映射,所以它除了适用于Spring构建的应用程序,也可以在任何其他语言运行的应用程序中使用。作为一个应用可以通过部署管道来进行测试或者投入生产,我们可以分别为转载 2016-12-21 14:38:57 · 887 阅读 · 0 评论 -
Spring 的 init-method 和 destory-method
关于在spring 容器初始化 bean 和销毁前所做的操作定义方式有三种:第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作第二种是:通过 在xml中定义init-method 和 destory-method方法第三种是: 通过bean实现InitializingBean和 DisposableBean原创 2016-12-15 14:52:00 · 726 阅读 · 0 评论 -
通过Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作
关于在spring 容器初始化 bean 和销毁前所做的操作定义方式有三种:第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作第二种是:通过 在xml中定义init-method 和 destory-method方法第三种是: 通过bean实现InitializingBean和 DisposableBean原创 2016-12-15 14:52:39 · 613 阅读 · 0 评论 -
Spring bean 通过实现 InitializingBean ,DisposableBean 接口实现初始化方法和销毁前操作
关于在spring 容器初始化 bean 和销毁前所做的操作定义方式有三种:第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作第二种是:通过 在xml中定义init-method 和 destory-method方法第三种是: 通过bean实现InitializingBean和 DisposableBean原创 2016-12-15 14:53:42 · 564 阅读 · 0 评论 -
Spring Cloud构建微服务架构(四)分布式配置中心(续)
本文接之前的《Spring Cloud构建微服务架构(四)分布式配置中心》,继续来说说Spring Cloud Config的使用。先来回顾一下,在前文中我们完成了什么:构建了config-server,连接到Git仓库在Git上创建了一个config-repo目录,用来存储配置信息构建了config-client,来获取Git中的配置信息在本文中,我们继续转载 2016-12-21 15:32:41 · 664 阅读 · 0 评论 -
Spring Cloud构建微服务架构(五)服务网关
通过之前几篇Spring Cloud中几个核心组件的介绍,我们已经可以构建一个简略的(不够完善)微服务架构了。比如下图所示:alt我们使用Spring Cloud Netflix中的Eureka实现了服务注册中心以及服务注册与发现;而服务间通过Ribbon或Feign实现服务的消费以及均衡负载;通过Spring Cloud Config实现了应用多环境的外部化配置以及版本管理。为了转载 2016-12-21 15:45:41 · 658 阅读 · 0 评论 -
Spring 的 BeanPostProcessor接口实现
今天学习了一下Spring的BeanPostProcessor接口,该接口作用是:如果我们需要在Spring容器完成Bean的实例化,配置和其他的初始化后添加一些自己的逻辑处理,我们就可以定义一个或者多个BeanPostProcessor接口的实现。 下面我们来看一个简单的例子: package com.spring.test.di; import org.sprin原创 2017-11-07 14:49:13 · 351 阅读 · 0 评论