您的位置:首页网页设计经验技巧 → Spring3注释装配的实践方案

Spring3注释装配的实践方案

时间:2011/2/11 11:46:08来源:本站原创作者:佚名我要评论(0)

长久以来国内的众多应用都在使用Spring框架,它为我们带来的好处不言而喻。但问题是Spring2.0以下版本尚未支持注释装配,而企业应用大多分作MVC三层结构,每层Bean的配置渐渐膨胀,直到打开了XML文件,IDE不堪重负崩溃为止,情形实为惊人。后有了Convention over Configuration的软件设计范式,即“约定优于配置”,也作“约定编程”。Ruby and Rails和EJB3也都按此实现,Spring注释也基于此。

 首先,在解答为什么要使用注释装配之前,先看看没有它时配置文件臃肿的样子,如:持久层DAO的Spring配置文件

 Xml代码
<?xml version="1.0" encoding="UTF-8"?> 
<beans ‘略去声明’> 
              
    <bean id="scDbInfoDAO" class="com.data.switching.db.dao.impl.ScDbInfoDAOImpl" 
        parent="sqlMapClientDAO" /> 
                          
    <bean id="scFtpInfoDAO" class="com.data.switching.db.dao.impl.ScFtpInfoDAOImpl" 
        parent="sqlMapClientDAO" /> 
                  
    <bean id="scParmInfoDAO" class="com.data.switching.db.dao.impl.ScParmInfoDAOImpl" 
        parent="sqlMapClientDAO" /> 
                  
    <bean id="scParmTypeDAO" class="com.data.switching.db.dao.impl.ScParmTypeDAOImpl" 
        parent="sqlMapClientDAO" /> 
                  
    <bean id="scRoleDAO" class="com.data.switching.db.dao.impl.ScRoleDAOImpl" 
        parent="sqlMapClientDAO" />    
              
    <bean id="scRoleMenuDAO" class="com.data.switching.db.dao.impl.ScRoleMenuDAOImpl" 
        parent="sqlMapClientDAO" />    
              
    <bean id="scSiteLoadDAO" class="com.data.switching.db.dao.impl.ScSiteLoadDAOImpl" 
        parent="sqlMapClientDAO" />    
              
    <bean id="scSiteStatDAO" class="com.data.switching.db.dao.impl.ScSiteStatDAOImpl" 
        parent="sqlMapClientDAO" />    
 
略去同样999个配置 ... ...  

<?xml version="1.0" encoding="UTF-8"?>
<beans ‘略去声明’>
   
 <bean id="scDbInfoDAO" class="com.data.switching.db.dao.impl.ScDbInfoDAOImpl"
  parent="sqlMapClientDAO" />
      
 <bean id="scFtpInfoDAO" class="com.data.switching.db.dao.impl.ScFtpInfoDAOImpl"
  parent="sqlMapClientDAO" />
    
 <bean id="scParmInfoDAO" class="com.data.switching.db.dao.impl.ScParmInfoDAOImpl"
  parent="sqlMapClientDAO" />
    
 <bean id="scParmTypeDAO" class="com.data.switching.db.dao.impl.ScParmTypeDAOImpl"
  parent="sqlMapClientDAO" />
    
 <bean id="scRoleDAO" class="com.data.switching.db.dao.impl.ScRoleDAOImpl"
  parent="sqlMapClientDAO" /> 
   
 <bean id="scRoleMenuDAO" class="com.data.switching.db.dao.impl.ScRoleMenuDAOImpl"
  parent="sqlMapClientDAO" /> 
   
 <bean id="scSiteLoadDAO" class="com.data.switching.db.dao.impl.ScSiteLoadDAOImpl"
  parent="sqlMapClientDAO" /> 
   
 <bean id="scSiteStatDAO" class="com.data.switching.db.dao.impl.ScSiteStatDAOImpl"
  parent="sqlMapClientDAO" /> 

略去同样999个配置 ... ... 

使用后的情况:

 Xml代码
<?xml version="1.0" encoding="UTF-8"?> 
<beans> 
      
<context:annotation-config /> 
 
<context:component-scan base-package="com.longtop.data.switching.db.dao" 
name-generator="com.seraph.bi.suite.support.core.generator.IBatisDaoBeanNameGenerator" />                  
          
</beans> 

<?xml version="1.0" encoding="UTF-8"?>
<beans>
 
<context:annotation-config />

<context:component-scan base-package="com.longtop.data.switching.db.dao"
name-generator="com.seraph.bi.suite.support.core.generator.IBatisDaoBeanNameGenerator" />    
  
</beans> 
现在大家想必都了解到为什么使用注释配置,两者之间后者很优雅,而这全在于约定优于配置。

 解决方案:

 改造过程是,首先在DAO的实现类中加入@Repository标签,说明这是持久层的服务。另外两层的标签@Service, @Controller,实现类如下:

 Java代码
import org.springframework.stereotype.Repository;  
...  
 
@Repository 
public class ScDbInfoDAOImpl extends SqlMapClientDaoSupport implements ScDbInfoDAO {  
... 

import org.springframework.stereotype.Repository;
...

@Repository
public class ScDbInfoDAOImpl extends SqlMapClientDaoSupport implements ScDbInfoDAO {
... 
在配置文件中加入:

相关视频

    没有数据

相关阅读 Springtomize3支持8.3吗 springtomize3 ios8.3能用吗Springtomize3教程 Springtomize3怎么用spring forword!苹果3月9日春季发布会iphone隐藏桌面分页点方法RespringCacheFix清理iphone注销后产生的垃圾文件springtomize重新自定义的系统设置及功能增强springtomize调色温的问题springtomize2一秒钟变iphone5

文章评论
发表评论

热门文章 Wordpress本地安装教程dx1.5如何设置二级域名

最新文章 hbuilder有哪些快捷键Wordpress本地安装教程 Wordpress本地安装教程expression web 4文档乱码解决方法dz 2.5“收藏本版”关闭小对话框无法关闭解在制作安装软件之前,您必须先将易语言存盘,

人气排行 如何使用multipart/form-data格式上传文件Photoshop PS图层混合模式详解(非常详细)ISAPI_Rewrite3使用教程网站里添加收藏和设为首页代码桌面快捷方式图标不见了C#获取执行程序所在的当前路径的方法详解(XMLHttpRequest)进行跨域请求方法如何用远程桌面连接进行传输文件