实用在线网站[中国孕妇网]系统构架分析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:[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;
 }

你可能感兴趣的:(DAO,spring,bean,框架,servlet)