随笔分类 - Spring
摘要:如果在开发时进行一些数据库测试,希望链接到一个测试的数据库,以避免对开发数据库的影响。开发时的某些配置比如log4j日志的级别,和生产环境又有所区别。各种此类的需求,让我希望有一个简单的切换开发环境的好办法,曾经在ROR的时候就很喜欢舒服。现在spring3.1也给我们带来了profile,可以方便快速的切换环境。配置环境使用也是非的方便。只要在applicationContext.xml中添加下边的内容,就可以了 profile的定义一定要在文档的最下边,否则会有异常。整个xml的结构大概是这样的, ...
阅读全文
摘要:利用@PropertySource注解加载@Configuration@ComponentScan(basePackages="*")@PropertySource({"classpath:config.properties"})//@Import(DataSourceConfig.class)public class DefaultAppConfig { @Bean public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { re
阅读全文
摘要:控制反转 英语:Inversion of control,缩写为IoC 我想很多同学都会思考过这样的一个问题,控制反转,什么地方反转了,是不是翻译的不对?这里插一句当年马云借着盖茨的嘴说:“互联网会改变世界。”其实是他自己说的,因为那时侯没有人认识马云,如果我说是翻译错误,大家肯定拍砖说我没理解。大家对spring都用了很多年,有喜欢看书的同学一定会看到过spring 技术内幕,非常棒的一本书,没看的看过这篇博客之后记得买一本。细心的同学可能会记得这样一句话早在2004年,Martin Fowler就提出了“哪些方面的控制被反转了?”这个问题。他总结出是依赖对象的获得被反转了。基于这个结论,他
阅读全文
摘要:目前的JAVA 企业级开发框架,我们常用的大致包括IOC AOP MVC ORM框架 1、 IOC spring是一个非常棒的ico容器,其思想非常简单,用一个集合对象如MAP 来缓存对象(对象都是单例的),这也就是spring 所说容器内单例,它和java中的单例模式的区别在于单例模式是在当前java进程中保持单例,因为它有三个必要条件:private static 自身对象、private 构造方法、public static getInstance()方法,以保持在进程中单例,而spring只能保证在容器中单例,用户是可以手动再new出其他对象的。所以这部分如果为了简单可以不使用spri
阅读全文
摘要:相信每个人都被问过无数次Spring声明式事务的隔离级别和传播机制吧!今天我也来说说这两个东西. 加入一个小插曲, 一天电话里有人问我声明式事务隔离级别有哪几种, 我就回答了7种, 他问我Spring的版本, 我回答为3.0。 他说那应该是2.5的,3.0好像变少了。 我回答这个没有确认过。 后来我就google了一下,没发现什么痕迹说明事务的隔离级别变少了,也查了下官方文档,也没有相关的说明。索性在github上clone一下Spring的源码,看看源码中有几种就是几种了呗。 后来想想那天他那么问我完全可能是一个坑啊,因为交谈的过程中挖过至少两个坑了。再者说,Spri...
阅读全文
摘要:给自己使用的无需定义接口;即一个模块内部的都是封装的,定义接口并不会得到很多好处,变过几次实现?? “优先面向接口编程,而非实现” 不是必须,是优先;给朋友(第三方)使用的定义接口;即要公开的功能,因为接口就是个契约,就是沟通用的;优先使用setter注入,除非必要才使用构造器注入;使用CGLIB代理,这样基本不会出现AOP代理注入不了或一些隐晦的问题;优先使用Spring提供的XML标签简化功能定义,如、等,而不要使用低层次API;尽量使用XML风格的事务,而不是注解风格;按照配置的内容分多配置文件存放配置,不要一股脑的放在一起,就像不分包那样;可配置部分(如db数据)还是放到XML中,不要
阅读全文
摘要:上面的代码是jedisPool交给spring处理的代码,比普通bean配置多了一个属性depends-on,这里就记录一下depends-on属性的作用和注意点:作用:depends-on用来指定Bean初始化及销毁时的顺序。如上面jedis pool定义depend-on="jedisPoolConfig",这意味着Spring总会保证jedisPoolConfig在jedisPool之前实例化,总是在jedisPool之后再销毁。适用的场景:用来确定bean定义中依赖关系不明确或者没有直接依赖关系时,指定bean...
阅读全文
摘要:在应用中,我们常常使用标签为JavaBean注入它依赖的对象。但是对于一个大型的系统,这个操作将会耗费我们大量的资源,我们不得不花费大量的时间和精力用于创建和维护系统中的标签。实际上,这种方式也会在另一种形式上增加了应用程序的复杂性,那么如何解决这个问题呢?Spring为我们提供了一个自动装配的机制,尽管这种机制不是很完善,但是在应用中结合标签还是可以大大的减少我们的劳动强度。前面提到过,在定义Bean时,标签有一个autowire属性,我们可以通过指定它来让容器为受管JavaBean自动注入依赖对象。的autowire属性有如下六个取值,他们的说明如下:1、No:即不启用自动装配。Autow
阅读全文
摘要:Spring 1、你一般用spring做什么?控制反转IOC AOP2、spring中的哪个类的哪个方法可用于获取beanApplicationContext类的getBean()方法。3、spring是什么?根据你的理解详细谈谈你的见解。 ◆目的:解决企业应用开发的复杂性 ◆功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 ◆范围:任何Java应用 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 ◆轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并...
阅读全文
摘要:Spring 3.1 提供了对已有的 Spring 应用增加缓存的支持,这个特性对应用本身来说是透明的,通过缓存抽象层,使得对已有代码的影响降低到最小。该缓存机制针对于 Java 的方法,通过给定的一些参数来检查方法是否已经执行,Spring 将对执行结果进行缓存,而无需再次执行方法。可通过下列配置来启用缓存的支持(注意使用新的schema):<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instan
阅读全文
摘要:今天有个朋友问我一个事务不起作用的问题,如果对事务代理不了解的话,这个问题需要引起大家注意。先看配置文件: <!-- 配置事务拦截器--> <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> <!-- 事务拦截器bean需要依赖注入一个事务管理器 --> <property name="transactionManager" r
阅读全文
摘要:前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识。通过这次的学习发觉Spring的事务配置只要把思路理清,还是比较好掌握的。 总结如下: Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource、TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分。 DataSource、TransactionManager这两部分只是会根据数据访问方式有所变化,比如使用Hibernate进行数据访问时,DataSource实际为SessionFactory,.
阅读全文