|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
关于第二点:俺问问你,如果是企业级项目的话,诸如RMI,EJB,等一些关键技术,这些难道都不需要学么?如果光是使用jsp,servlet,javabean的话。
我们看看Spring中的事件处置的代码,利用Spring办理事件有声明式和编程式两种方式,声明式事件处置经由过程AOP的完成把事物办理代码作为方面封装来横向拔出到营业代码中,使得事件办理代码和营业代码解藕。在这类体例我们分离IoC容器和Spirng已有的FactoryBean来对事件办理举行属性设置,好比传布举动,断绝级别等。个中最复杂的方式就是经由过程设置TransactionProxyFactoryBean来完成声明式事物;
在全部源代码剖析中,我们能够大抵能够看到Spring完成声明式事物办理有这么几个部分:
*对在高低文中设置的属性的处置,这里触及的类是TransactionAttributeSourceAdvisor,这是一个关照器,用它来对属性值举行处置,属性信息放在TransactionAttribute中来利用,而这些属性的处置常常是和对切进点的处置是分离起来的。对属性的处置放在类TransactionAttributeSource中完成。
*创立事物的历程,这个历程是托付给详细的事物办理器来创立的,但Spring经由过程TransactionStatus来传送相干的信息。
*对事物的处置经由过程对相干信息的判别来托付给详细的事物办理器完成。
我们上面看看详细的完成,在TransactionFactoryBean中:
Java代码
publicclassTransactionProxyFactoryBeanextendsAbstractSingletonProxyFactoryBean
implementsFactoryBean,BeanFactoryAware{
//这里是Spring事件处置而利用的AOP拦阻器,两头封装了Spring对事件处置的代码来撑持声明式事件处置的完成
privatefinalTransactionInterceptortransactionInterceptor=newTransactionInterceptor();
privatePointcutpointcut;
//这里Spring把TransactionManager注进到TransactionInterceptor中往
publicvoidsetTransactionManager(PlatformTransactionManagertransactionManager){
this.transactionInterceptor.setTransactionManager(transactionManager);
}
//这里把在bean设置文件中读到的事件办理的属性信息注进到TransactionInterceptor中往
publicvoidsetTransactionAttributes(PropertiestransactionAttributes){
this.transactionInterceptor.setTransactionAttributes(transactionAttributes);
}
.........两头省略了其他一些办法.......
//这里创立SpringAOP对事件处置的Advisor
protectedObjectcreateMainInterceptor(){
this.transactionInterceptor.afterPropertiesSet();
if(this.pointcut!=null){
//这里利用默许的关照器
returnnewDefaultPointcutAdvisor(this.pointcut,this.transactionInterceptor);
}
else{
//利用下面界说好的TransactionInterceptor作为拦阻器,同时利用TransactionAttributeSourceAdvisor
returnnewTransactionAttributeSourceAdvisor(this.transactionInterceptor);
}
}
}
<p>
最后我再次声明,我并没有说不看好java,实际上我对java很乐观的,毕竟她正在不断改进中,我相信她总有一天会和.net并驾齐驱的 |
|