知识大全 由Ruby on Rails想到的

Posted

篇首语:任何人的知识不可能超过他自己的经验。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 由Ruby on Rails想到的相关的知识,希望对你有一定的参考价值。

反思Spring:由Ruby on Rails想到的  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

众所周知 RoR里面的指导原则有   第一条是较小的软件 这意味着你编写较少的程序行 程序小就能加速开发 错误也较少 使得程序较容易理解 维护和增强 对编写较小程序做出贡献的Ruby的一个特性就是它假设该架构本身能够并应该处理元数据   第二条是对配置的协定原理 这意味着Rails不用配置文件 而是依靠一些简单的编程协定 让它通过利用应用程序已有的信息和在运行的数据库 解决它需要知道什么这个问题   Spring一个非常灵活的一个框架 灵活的同时也造成了一定的复杂性 我个人眼中的spring应该从RoR学到的东西应该有 不用写一行xml语句就可以配置好AOP常规的事务管理 约定高于配置   当前spring支持的事务管理配置 大体有以下两种配置方式 为了方便举例子 所以借用了javaEE技术专家 江南白衣 的两段代码   ( ) spring 版本支持的事务管理  代码 <bean id= baseTxService class= springframework transaction interceptor TransactionProxyFactoryBean abstract= true > <property name= transactionManager ref= transactionManager /> <property name= proxyTargetClass value= true /> <property name= transactionAttributes > <props> <prop key= get* >PROPAGATION_REQUIRED readOnly</prop> <prop key= find* >PROPAGATION_REQUIRED readOnly</prop> <prop key= save* >PROPAGATION_REQUIRED</prop> <prop key= remove* >PROPAGATION_REQUIRED</prop> </props> </property> <property name= preInterceptors > <list> <ref bean= methodSecurityInterceptor /> </list> </property> </bean> <bean id= bookManager parent= baseTxService > <property name= target > <bean class= springside bookstore admin manager BookManager /> </property> </bean>   ( ) spring 开始支持事务管理的新配置   代码<aop:config proxy target class= true > <aop:advisor pointcut= execution(*yourpackagename *Manager *( )) advice ref= txAdvice /> <aop:advisor pointcut= execution(*yourpackagename *Manager save( )) advice ref= fooAdvice /> </aop:config><tx:advice id= txAdvice transaction manager= transactionManager > <tx:attributes> <tx:method name= save* /> <tx:method name= remove* /> <tx:method name= * read only= true /> </tx:attributes> </tx:advice> <bean id= bookManager class= sprimons service BookManager />   上面的二段配置文件代码是常用的spring事务管理配置   看完上面的二段代码的配置 和Ruby on Rails没有一行配置的ActiveRecord相比差太远 相对麻烦拖拉 没有办法 暂时spring实现中事务管理主要也只是这两种方法   使用spring通常会与hibernate/ibatis集成作数据访问层 这也是大多java开发人员常用字的技术框架 下面如spring和hibernate结合做数据访问层 暂时不讨论有泛型存在的情况 只是简单举一个例子把事务管理放在数据访问层 下面说出我自己心中理想的spring事务管理   约定高于配置 首先规定 对于query list show get find等开头的方法采用PROPAGATION_REQUIRED readOnly级的事务定义 而对于set save update remove delete等开头的方法采用PROPAGATION_REQUIRED级的事务定义 基本上能满足大部分开发的需要 然后只要在需要事务管理配置的类的前加一句元数据即可 例如spring针对hibernate 开发的@TransactionAop(hibernate ) 类似的有@TransactionAop(hibernate ) @TransactionAop(ibatis) @TransactionAop(jdo)之类元数据的  举一个例子看一段代码 其中UserDAO是一个接口 大家都应该看得出来 只加了一行的元数据@TransactionAop(hibernate )就可以使得这一个UserDAHibernate类有事务管理的功能 因为它命名的方法符合spring的约定 (当然 这不是真的 spring中也没有这一个功能 这只是我个人一点想法提出来而已)   代码package appfuse dao hibernate; import java util List; import appfuse dao UserDAO; import appfuse model User; import springframework orm hibernate support HibernateDaoSupport; span > //假设有下面这一个类 import springframework orm hibernate support annotations TransactionAop; </span> <span >@TransactionAop(hibernate )</span> public class UserDAOHibernate extends HibernateDaoSupport implements UserDAO public User getUser(Long userId) return (User)this getHibernateTemplate() get(User class userId); public List getUsers() return this getHibernateTemplate() find( from User ); public void removeUser(Long userId) Object user = this getHibernateTemplate() load(User class userId); this getHibernateTemplate() delete(user); public void saveUser(User user) this getHibernateTemplate() saveOrUpdate(user);   spring的事务定义很灵活很广 定义七种的传播行为和五种的隔离常量 但用得比较多还是PROPAGATION_REQUIRED和PROPAGATION_REQUIRED readOnly 所以我提出上面所述的一点假想 可以简便开发   简单就是美 cha138/Article/program/Java/ky/201311/27984

相关参考

知识大全 由Ruby on Rails想到的[1]

反思Spring:由RubyonRails想到的[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 Java 与Ruby on Rails对接

Java与RubyonRails对接  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!Ruby和rai

知识大全 Groovy on rails使用

Groovyonrails使用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  开发环境  下载b

知识大全 跨越边界: REST on Rails

跨越边界:RESTonRails  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  过去的年间一个趋

知识大全 如何控制Ruby应用程序的大小

如何控制Ruby应用程序的大小  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Rails使得开发

阿黛尔《Easy on Me》歌词及译文

《EasyonMe》是阿黛尔·阿德金斯演唱的歌曲,由阿黛尔·阿德金斯和格莱格·科尔斯汀共同创作词曲,2021年10月15日以单曲形式发行,收录至阿黛尔&mid

知识大全 Rails 开发与 Java 编程的比较

Rails开发与Java编程的比较  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  年月日&nbs

泰坦尼克号主题曲《My heart will go on》歌词全文

泰坦尼克号主题曲《Myheartwillgoon》歌词全文经典电影《泰坦尼克号》的主题曲《MyHeartWillGoOn》由好莱坞主流电影作曲家詹姆斯·霍纳制作,韦尔·杰宁

知识大全 新Eclipse插件—为Java 、PHP和Rails的应用添加云托管功能

新Eclipse插件—为Java、PHP和Rails的应用添加云托管功能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们

知识大全 Ruby能否成为第二个Java

Ruby能否成为第二个Java?  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一直以来Ruby