![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring
文章平均质量分 66
逍遥不羁
这个作者很懒,什么都没留下…
展开
-
spring的执行原理
简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 ◆轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。 ◆控制反转——Spring通过一种称作原创 2012-11-06 21:55:07 · 5090 阅读 · 0 评论 -
Spring整理系列(11)——@Configuration注解、@Bean注解以及配置自动扫描、bean作用域
1、@Configuration标注在类上,相当于把该类作为spring的xml配置文件中的,作用为:配置spring容器(应用上下文)package com.test.spring.support.configuration;@Configurationpublic class TestConfiguration { public TestConfiguration(){原创 2016-08-11 15:16:16 · 74089 阅读 · 11 评论 -
Spring整理系列(10)——@Autowired自动装配、结合@Qualifier过滤及与JSR-250@Resource注解、JSR-330@Inject注解的区别、@Named使用
写在前面:在Spring整理系列(02)——spring依赖注入,组装对象之间的依赖关系文中,第三部分简单介绍了使用@Autowired注解自动装配bean的情况,此处引用一下。一、使用@Autowired注解,实现自动装配在使用注解装配之前,首先要开启注解装配的方式,那就是在配置文件中加上下面这句话<context:annotation-config></context:annotation-co原创 2016-08-10 14:29:53 · 4768 阅读 · 1 评论 -
Spring整理系列(12)——spring中AOP基本概念
1.什么是AOPAOP:Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等2.AOP的实现方式预编译 AspectJ运行期动态代理(JDK动态代理,CGLib动态代理) SpringAOP,JboosAOP Spring AOP转载 2016-08-12 12:09:15 · 849 阅读 · 0 评论 -
Spring整理系列(13)——基于配置方式实现spring AOP
1、实现spring AOP所需要的jarAOP所需要的jar:aspectjrt.jar aspectjweaver.jarcglib.jar同时需要spring框架相关jar:spring-context.jarspring-context-support.jarspring-tx.jar单元测试jarjunit.jar项目基于maven进行管理,完整的pom.xml配置文件原创 2016-08-12 15:03:57 · 672 阅读 · 0 评论 -
Spring整理系列(14)——基于注解的AspectJ风格实现spring AOP
1、需要引用的jar包及xml文件规范,请查看上一篇:Spring整理系列(13)——基于配置方式实现spring AOP2、基于Aspectj注解风格,xml配置 <!-- 开启aspectj风格自动代理 --> <aop:aspectj-autoproxy/> <!-- 注册登录业务bean --> <bean name="loginService" class="c原创 2016-08-12 16:46:26 · 940 阅读 · 0 评论 -
maven搭建模块化项目过程遇到的坑
采用maven构建模块化项目,将一个整体项目拆分为entity、dao、service、web四个独立模块,项目架构采用spring MVC+spring+mybatis,整个过程直至项目跑起来,报了几个小问题,在此记录,算是经验吧。1、src/main/resources下创建的folder文件夹,显示为包,而不是文件夹产生原因:鼠标右键项目–>properties–>java bulid pat原创 2016-09-21 10:25:52 · 4258 阅读 · 0 评论 -
Spring整理系列(07)——通过Spring Resource接口获取资源
一、Resources介绍Resources :获取资源文件的统一接口。二、Resources接口主要实现类有ClassPathResource:获取类路径下的资源文件UrlResource:URL对应的资源,根据一个URL地址即可创建FileSystemResource:获取文件系统里面的资源ServletContextResource:ServletContext封装的资源,用于访问S原创 2016-08-07 18:14:26 · 1399 阅读 · 5 评论 -
Spring整理系列(06)——spring中Aware结尾接口
一、关于spring中Aware结尾接口介绍:Spring中提供一些Aware结尾相关接口,像是BeanFactoryAware、 BeanNameAware、ApplicationContextAware、ResourceLoaderAware、ServletContextAware等等。实现这些 Aware接口的Bean在被初始之后,可以取得一些相对应的资源,例如实现BeanFactoryAwa原创 2016-08-07 16:16:29 · 13789 阅读 · 2 评论 -
分布式缓存技术redis学习系列(五)——spring-data-redis与JedisPool的区别、使用ShardedJedisPool与spring集成的实现及一致性哈希分析
一、Redis与spring的整合一般分为spring-data-redis整合和JedisPool整合,先看看两者的区别1)、引用的依赖不同:spring-data-redis使用的依赖如下: <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data原创 2016-08-29 17:37:02 · 19498 阅读 · 5 评论 -
由service层接口有什么用?引申到基于JDK原生和CGLIB动态代理实现spring事务管理的机制的思考
问题1:Services层为什么要用(Services接口 类 + Services接口实现 类)分开,这样做有什么好处?回答:http://www.iteye.com/problems/66260 评论区总结:1.编程接口化, 2.Spring的事物管理默认用的是java动态代理。问题2:Spring事物管理实现的机制或原理?回答:http://blog.csdn.net/jdream314/原创 2016-12-19 17:48:03 · 1100 阅读 · 0 评论 -
SpEL表达式使用记录
SpEL表达式的首要目标是通过计算获得某个值。在计算这个数值的过程中,会使用到其他的值并会对这些值进行操作。最简单的SpEL求值或许是对字面值、Bean的属性或者某个类的常量进行求值。SpEL表达式使用#{}作为取值运算符。一、字面值1、最简单的SpEL表达式或许仅包含一个字面值:<property name="count" value="#{5}"/>2、非SpEL表达式的值混用:<propert原创 2017-03-03 19:23:58 · 2570 阅读 · 0 评论 -
Spring中报"Could not resolve placeholder"的解决方案
除去properites文件路径错误、拼写错误外,出现”Could not resolve placeholder”很有可能是使用了多个PropertyPlaceholderConfigurer或者多个<context:property-placeholder>(<context:property-placeholder>底层也是PropertyPlaceholderConfigurer)的原因。原创 2017-02-27 17:12:26 · 22177 阅读 · 0 评论 -
java项目实现流水号自动增长
项目中有一个规则编号字段,从1开始,编号长度为5位,那么第一条数据编号就是00001。实现的基本思路就是项目启动时,从数据库获取当前最大值,作为静态变量存储; 业务获取新的编码,考虑并发问题,获取编码方法(编码自增部分)为synchronized同步方法,如果自增为原子操作,则无需同步; 编码前置0,使用String.format("%05d", newNum);格式化获取。实现代码如下:pub原创 2017-04-08 14:31:35 · 43058 阅读 · 10 评论 -
Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的。现在核心业务抽取出来,作为独立的服务,使前端应用能更快速和稳定的响应。 第一:介绍Dubbo背景 大规模服务化之前,应用可能只是通过RMI或Hessian等工具,简单的暴露和引用远程服务,通过配置服务的URL地址进行调用,通过F5等硬转载 2016-07-29 16:29:13 · 579 阅读 · 1 评论 -
Spring整理系列(02)——spring依赖注入,组装对象之间的依赖关系
上篇文章整理了spring容器注册bean的实现方式,本文将整理spring注入bean的实现方式,多数文章按照setter和构造器注入的纬度来介绍,本文将按照如何采用setter和构造器的纬度来整理,即xml配置注入、xml配置自动装配、注解自动装配三种方式,希望说的不啰嗦。一、xml配置注入,手动装配,提供setter方法或者constructor构造函数1、需提供setter方法方式:spri原创 2016-08-06 02:03:56 · 2797 阅读 · 0 评论 -
Spring整理系列(17)————循序渐进了解spring事务管理的几种方式
先从实例开始。。。。一、实例基本业务为银行转账,A账户向B账户转账,业务执行过程要保证A、B两个帐号数据操作同时成功或失败,此时就需要事务进行控制,基本实例代码如下:转账DAO:public interface AccountDao { //转出操作 public void outMoney(String out,double money); //转入操作 public原创 2016-08-22 10:41:26 · 3603 阅读 · 3 评论 -
Spring对hibernate的事物管理
把Hibernate用到的数据源Datasource,Hibernate的SessionFactory实例,事务管理器HibernateTransactionManager,都交给Spring管理。一.事务的4个特性: 原子性:一个事务中所有对数据库的操作是一个不可分割的操作序列,要么全做,要么全部做。 一致性:数据不会因为事务的执行而遭到破坏。 隔离性:一个事务的执行原创 2012-11-06 22:40:23 · 6412 阅读 · 1 评论 -
Spring框架IOC(控制反转)的核心
Spring框架IOC(控制反转)的核心:配置文件+反射机制,生成对象并操作对象1、通过配置文件,获取实例化对象2、通过获取的实例化对象,得到Class对象,通过该Class对象可以操作Field、Method、Contructor(获取属性和调用方法,包括构造器)Spring框架就是通过将Field值以及依赖对象都保存在配置文件中进行管理,从而实现较好的解耦,这也是Spring框架的原创 2015-05-21 20:01:46 · 862 阅读 · 0 评论 -
spring boot 加载本地静态资源文件路径配置
1、spring boot默认加载文件的路径: /META-INF/resources/ /resources/ /static/ /public/ 我们也可以从spring boot源码也可以看到:private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-IN原创 2016-07-22 16:13:20 · 15856 阅读 · 0 评论 -
Spring MVC REST风格实现PUT、DELETE请求
1、浏览器form表单只支持GET与POST请求,而DELETE、PUT等method并不支持,spring3.0添加了一个过滤器,可以将这些请求转 换为标准的http方法,使得支持GET、POST、PUT与DELETE请求,该过滤器为HiddenHttpMethodFilter,只需要在表单中添加一个隐藏字段”_method”。如果通过jQuery发送ajax请求,jQuery是支持put和del原创 2016-06-30 17:10:43 · 3408 阅读 · 0 评论 -
Spring整理系列(15)——Mybatis3.2.1整合Spring3.1
根据官方的说法,在ibatis3,也就是Mybatis3问世之前,Spring3的开发工作就已经完成了,所以Spring3中还是没有对Mybatis3的支持。因此由Mybatis社区自己开发了一个Mybatis-Spring用来满足Mybatis用户整合Spring的需求。下面就将通过Mybatis-Spring来整合Mybatis跟Spring的用法做一个简单的介绍。一、SqlSessionFac转载 2016-08-15 18:23:15 · 865 阅读 · 0 评论 -
Spring整理系列(05)——spring bean的生命周期
spring bean生命周期包含bean定义、初始化、使用及销毁等阶段。 bean定义指的是在xml文件中配置bean或bean类中注解bean,bean使用即从springcontext中获取已经初始化的bean并应用的过程,本文主要介绍bean的初始化及销毁阶段。一、配置实现spring bean初始化、销毁的方式1、xml文件中配置bean的init-method属性和destroy-me原创 2016-08-07 15:23:30 · 970 阅读 · 0 评论 -
Spring整理系列(16)——通过单元测试理解spring容器以及dubbo+zookeeper单元测试异常处理
一、先说一个结论:单元测试与主项目的spring容器是隔离的,也就是说,单元测试无法访问主项目spring容器,需要自己加载spring容器。接下来是代码实例,WEB主项目出于运行状态,单元测试中可能会看到如下这样的代码:代码一:当前类加载式public class TestSpring { @Test public void testSpring(){ LoginSe原创 2016-08-18 19:11:46 · 14114 阅读 · 3 评论 -
Spring整理系列(04)——spring bean的作用域
一、spring bean的作用域分为以下五种:1、singleton(默认模式):单例,指一个bean容器中只存在一份2、prototype:每次请求(每次使用)创建新的实例,destroy方式不生效3、request:每次http请求创建一个实例且仅在当前request内有效4、session:同上,每次http请求创建,当前session中有效5、global session:基于portle原创 2016-08-07 00:08:44 · 3422 阅读 · 0 评论 -
Spring整理系列(03)——spring容器ApplicationContext初始化(spring应用上下文初始化)
可以通过以下三种方式加载spring容器,实现bean的扫描与管理:1、 ClassPathXmlApplicationContext:从类路径中加载ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring-context.xml");context.start();2原创 2016-08-06 22:01:56 · 5407 阅读 · 0 评论 -
Spring整理系列(01)——spring概念简介、bean扫描与注册实现方式
写在前面:本文作为整理,包含很多个人理解,有跳跃成份,初学者如果看晕了,可以先看其它同类文章,或者……多看几遍。一、概念部分:1、spring概念:网上有很多2、spring核心:IOC(DI)和AOP3、IOC:控制反转,控制权的转移,应用程序本身不负责依赖对象的创建和维护,而是由外部容器负责创建和维护,只是负责使用解释一下就是:原来你在A类里面使用B类,需要new B(),现在不用new了,ne原创 2016-08-05 23:37:16 · 2684 阅读 · 0 评论 -
结合实际项目理解集群和分布式的关系
1、关于集群和分布式的关系最近看了篇文章 到底什么是集群&分布式,文中收集了多名网友的回答,一个来自知呼的回答挺明了: 分布式:一个业务分拆多个子业务,部署在不同的服务器上,(我的补充:)具有处理高并发的能力,但一个子业务系统宕机,该子业务功能将无法实现。 集群:同一个业务,部署在多个服务器上,(我的补充:)具有高可用的能力,一个系统宕机,不影响业务实现。现在所做的项目基本架构为s原创 2016-08-30 12:55:11 · 3863 阅读 · 0 评论 -
Spring整理系列(09)——spring与quartz整合触发器执行表达式cronExpression详解
CronTriggers往往比SimpleTrigger更有用,如果您需要基于日历的概念,而非SimpleTrigger完全指定的时间间隔,复发的发射工作的时间表。 CronTrigger,你可以指定触发的时间表如“每星期五中午”,或“每个工作日9:30时”,甚至“每5分钟一班9:00和10:00逢星期一上午,星期三星期五“。 即便如此,SimpleTrigger一样,CronTrigger拥有转载 2016-08-09 18:02:34 · 1547 阅读 · 0 评论 -
Spring整理系列(08)——spring与quartz整合执行定时任务
项目基于maven进行管理。一、实例项目代码示例: 1、pom.xml文件所需要的基本jar:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/PO原创 2016-08-09 17:54:29 · 2742 阅读 · 0 评论 -
java项目实现流水号自动增长-2-分布式环境
1、上一篇说的流水号自动增长,存在两个问题,第一如果编号是字母+数字格式的,数字自增可以使用AtomicInteger实现,但是与字母组合拼接肯定是一个非原子、非线程安全的,可以通过线程同步实现;第二是如果服务集群部署,涉及到分布式锁问题。下面的这个例子就是解决分布式环境下实现流水号自动增长的功能,通过线程同步+redis分布式锁实现。 代码实例如下:@Servicepublic class D原创 2017-04-08 16:06:01 · 7652 阅读 · 3 评论