本文对internate上正在运行的网站系统进行框架和技术分析[具体参考:地址 http://www.sitemesh.cn]
系统总体框架运行环境是在jvm 1.6以上版本上.系统充分使用了java6新特征Annotation ,在之前一篇文章中已经介绍过关于实体Bean的配置方法可以参照文章 用java开发的框架网站,代码共享[ORM Entity 配置1]
1关于系统启动的spring监听Listener扩充与继承:
/**
* @author ziyangjiayi E-mail:[email protected]
* @version v1.0
* 创建时间:Jun 2, 2008 8:16:02 PM
* 类说明:重写监听,加载springContext
*/
public class ApplicationStartupListener extends ContextLoaderListener {
/* (non-Javadoc)
* @see javax.servlet.ServletContextListener#contextInitialized(javax.servlet.ServletContextEvent)
*/
public void contextInitialized(ServletContextEvent event) {
super.contextInitialized(event);
/****************************************new extends start********************************************************/
Application.applicationRealPath = event.getServletContext().getRealPath("/");
ApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(event.getServletContext());
Application.setApplicationContext(applicationContext);
MyThing my = new MyThing();
my.start();
/***************************************end*********************************************************/
}
}
主要做了获取web启动时候的spring容器,如果系统中存在类无法直接调用spring的注入bean,可以直接从ApplicationContext 获取.如具体的某个servlet,spring 是没有办法直接注入bean实例的.
2.系统直接废除Dao层,直接采用service和Spring 直接提供的注解式事务 Annotation配置
eg:
<!-- 事务bean -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"/>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
</tx:advice>
具体serviceImpl
@Transactional(readOnly=true)
public MessageBoard showMessageBoard(Long messageBoardId)
{
MessageBoard messageBoard = null;
/***
*
**/
return messageBoard;
}