实用在线网站[中国孕妇网]系统构架分析2[Struts2 + Hibernate3 + Spring
本文对internate上正在运行的网站系统进行框架和技术分析[具体参考:地址??? http://www.sitemesh.cn]
系统总体框架运行环境是在jvm 1.6以上版本上.系统充分使用了java6新特征Annotation ,在之前一篇文章中已经介绍过关于实体Bean的配置方法可以参照文章 用java开发的框架网站,代码共享[ORM Entity 配置1]
?
1关于系统启动的spring监听Listener扩充与继承:
/**
?* @author ziyangjiayi E-mail:ziyangjiayi@163.com
?* @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" transaction-manager="transactionManager">
?</tx:advice>
?
具体serviceImpl
?
@Transactional(readOnly=true)
?public MessageBoard showMessageBoard(Long messageBoardId)
?{
??MessageBoard messageBoard = null;
??
?/***
*
?
**/??
??return messageBoard;
?}