`
dr.han
  • 浏览: 46290 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
bean的配置定义 引入idref <property name="targetName"> <idref bean="theTargetBean" /> </property> 在运行时,它完全等同于 <property name="targetName"> <value>theTargetBean</value> </property> 使用idref标记 ...
移除重复的代码   在项目进行过程中,经常会出现功能类似,甚至完全一样的代码,我们应尽量提取出来作为单一对象的处理逻辑,其他地方直接调用即可 代码异味 首先判断代码的稳定性,如果一些具体的情况或者需求发生改动了,然后我们来看一下我们的代码要满足新的需求是否需要改动,如果需要改动则表明代码是不稳定的,这是个很麻烦的事情,因为有很多种可能性,我们不知道那些需要考虑,那些不需要考虑,有个更简单的办法,就是如果我们已经第三次修改这些代码了,那我们就认定它是不稳定的,但这是一个被动的方法,虽然它很有效 我们有个更好的办法,如果这个代码是不稳定的,那么它往往包含一些痕迹,我们把这种痕迹称为“代码异味 ...
极限编程与敏捷开发 徐景周 在按照我的理解方式审查了软件开发的生命周期后,我得出一个结论:实际上满足工程设计标准的惟一软件文档,就是源代码清单。 -- Jack Reeves 简介        2001年,为了解决许多公司的软件团队陷入不断增长的过程泥潭,一批业界专家一起概括出了一些可以让软件开发团队具有快速工作、响应变化能力的价值观和原则,他们称自己为敏捷联盟。敏捷开发过程的方法很多,主要有:SCRUM,Crystal,特征驱动软件开发(Feature Driven Development,简称FDD),自适应软件开发(Adaptive Software Development ...
pages 349
Spring 连接RMI 服务 <bean id="rmiService" class="RmiProxyFactoryBean"> <property name="serviceUrl"> <value>********</value> </property> //指明了这个服务实现的接口,通过调用这个接口实现RMI <property name="serviceInterface"> < ...
事务:要么全有要么全无的操作叫做事务 事务的几个特征: (1)原子性Atomic (2)一致性Consistent (3)隔离性Isolated (4)持久性Durable Spring可供选择的事务管理器 (1)DataSourceTransactionManager在单一的jdbc datasource中管理事务,配置bean时注入DataSource (2)HibernateTrancationManager,配置bean时注入SessionFactory, HibernateTrancationManager把事务管理委托给从Hibernate session中获得的net.sf ...
Spring对ORM框架做了整合 Spring负责以下几部分功能: 事务管理 异常处理 线程安全,轻量级模版类 便利的支持类 资源管理 Spring 对Hibernate的整合 (1)管理Hibernate的资源           注册一个SessionFactory,替代hibernate.peropties文件           注册HibernateTemplate(线程安全的,多个DAO公用一个)      把HibernateTemplate自动注入到DAO中 (2)用HibernateTemplate访问Hibernate     Hibernate中的模版回调机制 ...
首先我们编写了通知advice,但是我们还不能表达在应用系统的什么地方应用这些通知,切入点决定了一个特定类的特定方法是否满足特定规则,如果满足则通知就应用到该方法上,Spring的切入点可以让我们灵活的定义在什么地方应用通知。 Spring的切入点框架的核心接口PointCut public interface PointCut { ClassFilter getClassFilter(); MethodMatcher getMethodMatcher(); } PointCut 是根据方法和类决定在什么地方织入通知的。 ClassFilter决定了一个类是否符合通 ...
用java编写spring通知 spring中所有的通知都是java类的形式编写,定义在什么地方应用通用的切入点通常编写在spring的配置文件中,而其他框架比如AspectJ,需要特定的语法编写切面和定义切入点,虽然这样可以得到更强大和细致的 ...
某些功能在应用系统中有可能经常使用,但是却不能通过继承的方式来解决,因此我们引入切面的实现方式 AOP名称 1.切面aspect:比如日志,日志记录在系统的各个模块都用到,继承重用并不合适,我们可以创建一个日志切面。 2.连接点joinpoint:程序执行过程中,插入切面的地点。 3.通知advice:通知切面的实际实现 4.切入点pointcut:定义了通知应该应用于哪些连接点,定义了哪些连接点要被通知 5.引入introduction:为已存在的类添加新的属性和方法 6.目标对象target:被通知的对象 7.代理proxy:将通知应用到目标对象后创建的对象,对于客户来说,目 ...
在应用系统生命周期中,ApplicationContext会发布很多事件,这些事件都继承抽象类org.springframework.context.ApplicationEvent,系统事件有: contextClosedEvent------上下文关闭的时候发布的事件 ContextRefreshedEvent---上下文初始化或者刷新的时候发布的事件 RequestHandledEvent-----上下文中,当一个请求被处理后发布的事件 自定义事件及事件的监听 (1) 编写事件类: MyEvent 继承ApplicationEvent (2) 发布事件:context.publishE ...
Spring 解析资源文件 我们把资源信息放置到properties文件中 通过配制bean来访问资源文件 <bean id="messageSource" class="org.springframework.context.support        ResourceBundleMessageSource">        <property name="basename">           <value>fileName</value>        </proper ...
Bean的后处理 Spring提供了2次机会让你切入到Bean的生命周期中去检查并修改它的配制,这叫做后处理 后处理的类须继承:public interface BeanPostProcessor{      Object postProcessBeforeInitializtion(Object bean,String name)  throws BeansExcepton; //在Bean的初始化方法之前调用      Object postProcessAfterInitializtion(Object bean, String name)  throws BeansExcepton; ...
首先假设一个复杂对象是由多个部件组成的,Builder模式是把复杂对象的创建和部件的创建分别开来,分别用Builder类和Director类来表示. 首先,需要一个接口,它定义如何创建复杂对象的各个部件: public interface Builder {   //创建部件A ...
Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。 因为Java中的提供clone()方法来实现对象的克隆(具体了解clone()按这里),所以Prototype模式实现一下子变得很简单. 以勺子为例: public abstract class AbstractSpoon implements Cloneable {   String spoonName;   public void setSpoonName(Str ...
Global site tag (gtag.js) - Google Analytics