`
pipe
  • 浏览: 206940 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用annotation来配置spring2.5+hibernate3.2+struts2

阅读更多
在这3种框架搭配使用的时候,我们往往需要写很多xml配置文件来配置各个框架的依赖关系。大的项目中,xml配置文件的过多,过于繁琐,导致查找起来会很不方便。

在这种情况下,我们需要简化我们的配置文件,同时结合部分xml来进行配置,这时候我们想到了annotation,这个近几年炒得很火的玩意。annotation和xml各自的好处和弊端我就不多说了,看代码吧。
开发环境要求:jdk6.0以上。tomcat5.5以上(也许tomcat5.0也行 不过没试过)
先从hibernate入手吧:
按照以往的写法,我们需要有.hbm文件来完成po映射。现在我们通过annotation省去了这部分工作。
具体代码如下:这是一个po类
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "userlog")
public class UserLog {
    @Id
    @GeneratedValue
    private Long id;

    @Column(name = "loginName")
    private String loginName;

....下面是setter/getter方法。


我们没在spring配置文件中配置hibernate连接信息,还是采用传统的hibernate.cfg.xml,当然也可以在spring中配置。代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
		"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
		"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
	    <property name="connection.datasource">java:/comp/env/jdbc/ExampleDB</property>
	  
		<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
		
		<!--  <property name="hbm2ddl.auto">create</property>-->
		<property name="show_sql">true</property>
        <mapping class="com.nuctech.po.UserLog"/>
       
    </session-factory>
</hibernate-configuration>


通过mapping class 我们就完成了po映射。

OK!我们再看dao层:

@Component
public class TestDao{
 @Resource
    private SessionFactory sessionFactory;

    public SessionFactory getSessionFactory() {
	return sessionFactory;
    }

    public void setSessionFactory(SessionFactory sf) {
	this.sessionFactory = sf;
    }
   public Session getSession() {
        return sessionFactory.getCurrentSession();
    }
   public void save(Object obj){
	getSession().save(obj);
    }
}

在这里,我们的dao采用了@Component 表示它是一个组件,在别的类中将会去调用。
@Resource 引用SessionFactory 的bean.
关于annotation 可以参考Spring-Reference_zh_CN.chm

再来看我们的Action:
@Component("TestAction")
public class TestAction extends ActionSupport {
   @Resource
    private TestDao dao; //这里引用上面的Component 
    private UserLog log;
   ...setter/getter方法

     其他的写法都一样了。

}



再看我们的struts配置文件
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <include file="struts-default.xml"/>
    	<constant name="struts.objectFactory" value="spring" />
		<constant name="struts.devMode" value="true" />
     <package name="com.nuctech.action" extends="struts-default">
                 <action name="queryUserLogByPage" class="TestAction" method="queryUserLogByPage">
        ......省略....
         </action>
    </package>
    
</struts>

注意这个action名字与@Component("TestAction")一致。
在没有annotation的情况下,我们在spring的配置文件中需要有很多的bean注入。现在都已经在类中注入了 那么我们现在来看spring配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:jee="http://www.springframework.org/schema/jee"
	xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
    http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
	<context:annotation-config />

	<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
	
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="configLocation" value="classpath:/hibernate.cfg.xml" />
	</bean>
	<bean id="transactionManager"
		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>

	<context:component-scan base-package="com.xxxx"/>
	<tx:annotation-driven/>
</beans>



我们只在这个配置文件中配置了sessionFactory.以前需要配置的bean不见了。
另外附上我们的jndi配置文件,在WebContent(WebRoot)下面的META-INF文件夹下面的context.xml。
<?xml version="1.0" encoding="UTF-8"?>
<Context antiResourceLocking="false">
	<!-- 以下段配置session在tomcat重启时的持久化策略,saveOnRestart为false时不进行持久化,方便调试时使用 -->
	<Manager className="org.apache.catalina.session.PersistentManager"
		debug="0" saveOnRestart="false" maxActiveSessions="-1"
		minIdleSwap="-1" maxIdleSwap="-1" maxIdleBackup="-1">
		<Store className="org.apache.catalina.session.FileStore"
			directory="mydir" />
	</Manager>
	<!-- MySQL配置-->
		<Resource name="jdbc/ExampleDB" type="javax.sql.DataSource"
			driverClassName="com.mysql.jdbc.Driver"
			url="jdbc:mysql://localhost:3306/book?useUnicode=true&amp;characterEncoding=utf-8"
			username="root" password="123" validationQuery="select 1"
			maxIdle="4" maxWait="5000" maxActive="8" removeAbandoned="true"
			removeAbandonedTimeout="120">
		</Resource>
	
</Context>

注意这个jndi名字与hibernate.cfg.xml中一致。

先就这样吧。
分享到:
评论
3 楼 songfantasy 2010-07-15  
@Component不建议使用,建议使用@service @controler等
2 楼 pipe 2008-12-15  
joeyhacker 写道

不错,annotation确实很简洁,但是我觉得xml更大众化,毕竟它很流行。

所以需要annotation与xml两者结合,xml用做struts2配置文件,其他地方可以用annotation,效果我感觉还是不错的。
1 楼 joeyhacker 2008-12-15  
不错,annotation确实很简洁,但是我觉得xml更大众化,毕竟它很流行。

相关推荐

    struts2.1 + spring 2.5 + hibernate 3.2 增删改查

    总结来说,"struts2.1 + spring 2.5 + hibernate 3.2 增删改查"的例子涵盖了Web应用开发中的核心部分:前端请求处理(Struts2)、业务逻辑管理(Spring)和数据库操作(Hibernate)。这个例子为初学者提供了一个很好...

    spring2.5+hibernate3.2+struts2.0组合配置说明

    ### Spring2.5 + Hibernate3.2 + Struts2.0 组合配置说明 在当前的软件开发领域,Spring2.5、Hibernate3.2 和 Struts2.0 这三个框架因其卓越的性能与丰富的功能而备受青睐。它们分别在业务逻辑层管理、数据持久化...

    struts2+spring2.5+hibernate3.2 annotation配置完整eclipse项目,带数据库脚本

    Struts2、Spring2.5和Hibernate3.2是经典的Java Web开发框架组合,它们各自在应用程序的不同层面提供了强大的功能。这个"sshTest"项目是一个使用这三个框架的注解配置的完整Eclipse工程,同时也包含了数据库脚本,...

    Struts2+Spring2.5+Hibernate3+Freemarker整合

    整合S2SH+Freemarker,后台用Spring管理各个bean,Hibernate做数据库持久化,viewer用Freemarker。整合中对Struts2,Hibernate,Spring都采用Annotation进行注解类。

    Struts2+Spring2.5+Hibernate3全注解实例详解

    超级详细的SSH2项目实例详解,并且附带两个项目详解。两种注解实现方式。不同的生成数据脚本实现。 在JavaEE企业级开发中,以SSH2框架为核心的应用非常广,大象根据项目实践经验,通过二个实例,详细的为大家讲解...

    Struts2+Spring2.5+Hibernate3+annotation 整合程序

    总之,"Struts2+Spring2.5+Hibernate3+annotation"的整合是Java Web开发中的经典组合,利用注解可以显著提升开发体验,减少配置文件的复杂性,使得项目结构更加清晰。如果你希望深入了解Java Web开发或者优化现有...

    Struts2+Spring2.5+Hibernate3+Freemarker框架整合

    整合S2SH+Freemarker+oscache,后台用Spring管理各个bean,Hibernate做数据库持久化,viewer用Freemarker。整合中对Struts2,Hibernate,Spring都采用Annotation进行注解类。

    java8+tomcat8+struts2.5+spring4.3+hibernate5.2框架搭建详细过程

    在搭建一个基于Java8 + Tomcat8 + Struts2.5 + Spring4.3 + Hibernate5.2 的项目前,首先需要对开发环境进行配置。 **1. Java8**: 作为项目的运行基础环境,确保已安装Java8,并正确设置JAVA_HOME等环境变量。 **2....

    spring+hibernate3.2+struts2.0 注解

    在Spring 2.5版本之后,Spring引入了对注解的强大支持,允许开发者在类或方法上直接标注,替代XML配置来声明bean及其依赖。例如,`@Component`、`@Service`、`@Repository`和`@Controller`注解用于标记组件,`@...

    struts1.3+spring2.5+hibernate3.3 组合开发 annotation实现

    Struts1.3、Spring2.5 和 Hibernate3.3 是经典的 Java Web 开发框架组合,它们在企业级应用中广泛使用。这个组合被称为“SSH”(Struts-Spring-Hibernate),它允许开发者构建可扩展且松耦合的后端系统。在本项目中...

    ssh2_全annotation_spring_3.2.0+hibernate_4.1.9+struts2_2.3.7

    spring_3.2.0+hibernate_4.1.9+struts2_2.3.7全annotation编写,采用MD5加密,已实现登录,注册,注销,验证码,带sql文件,src下面的SystemGlobals.properties文件配置下数据库就可以直接运行

    基于Struts2.18+Spring2.5+Hibernater3.3+Annotation注解开发的电子商务网站demo

    在本项目中,开发者可能使用上述框架来实现这些功能,如使用Struts2处理用户请求,Spring管理业务逻辑和服务,Hibernate处理数据持久化,同时利用注解提高开发效率。 6. **购物网**:购物网是电子商务网站的一种,...

    struts+spring+hibernate三大框架整合

    2. **事务管理**:Spring提供声明式事务管理,通过`&lt;tx:annotation-driven&gt;`启用基于注解的事务管理,或在配置文件中手动配置事务规则。 3. **DAO层的实现**:Spring的`HibernateTemplate`或`HibernateOperations`...

    Spring2.5+Struts2.0+hibernate3.0+Dwr+jquery+displayTag

    2 利用struts2 的LoginAction-validation.xml 3 在bean里把service包;暴露DWR,写了一个验证用户名的流程 4 采用jpa作为POJO,还是减少配置 5 加入display的分页,并且是物理分页 打开后自已建表sql.txt jdbc....

    基于Annotation的Struts2.0+Hibernate3.3+Spring2.5图文教程整合开发.doc

    这篇文档主要介绍了一个使用注解(Annotation)进行Struts2.0、Hibernate3.3和Spring2.5整合开发的教程。这种集成方式相比传统的XML配置,可以简化配置过程,提高开发效率。以下是各个框架及注解技术在教程中的应用: ...

    基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合开发

    总的来说,基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合开发利用注解简化了配置,提高了开发效率,使得代码更加可读,降低了出错的可能性。然而,需要注意的是,虽然注解使得配置文件减少,但过多的注解也...

Global site tag (gtag.js) - Google Analytics