分类分类
关注+2011-02-11作者:佚名
长久以来国内的众多应用都在使用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 {
...
在配置文件中加入:
相关文章
更多+相同厂商
热门推荐
点击查看更多
点击查看更多
点击查看更多
说两句网友评论