• spring+hibernate+struts2+compass整合


    项目结构;

    http://www.cnblogs.com/hongten/gallery/image/113449.html

    =======================================================

    需要引入compass的相关jar包:

    compass-2.1.0.jar

    compass-index-patch.jar

    lucene-core.jar

    lucene-highlighter.jar

    paoding-analysis.jar

    =======================================================

    建表语句:

    1 CREATE TABLE `product` (
    2 `id` int(11) NOT NULL AUTO_INCREMENT,
    3 `name` varchar(80) COLLATE utf8_unicode_ci DEFAULT NULL,
    4 `price` double(6,0) DEFAULT NULL,
    5 `brand` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL,
    6 `description` varchar(2000) COLLATE utf8_unicode_ci DEFAULT NULL,
    7 PRIMARY KEY (`id`)
    8 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

    注:这是我在mySQL中建立的product表,与本项目的表有一个地方有区别:id的类型

    项目中的是varchar(40),用的uuid的策略。更详细的信息请看:/compass1/src/com/v512/example/model/Product.hbm.xml

    =======================================================

    /compass1/src/com/v512/example/action/ProductAction.java

     1 package com.v512.example.action;
    2
    3 import java.util.List;
    4
    5 import com.opensymphony.xwork2.ActionSupport;
    6 import com.v512.example.model.Product;
    7 import com.v512.example.service.ProductManager;
    8 import org.apache.struts2.ServletActionContext;
    9
    10 public class ProductAction extends ActionSupport {
    11
    12 private static final long serialVersionUID = 3795048906805728732L;
    13 private ProductManager productManager;
    14 private Product product;
    15 private String queryString;
    16
    17 public void setQueryString(String queryString) {
    18 this.queryString = queryString;
    19 }
    20
    21 public Product getProduct() {
    22 return product;
    23 }
    24
    25 public void setProduct(Product product) {
    26 this.product = product;
    27 }
    28
    29 public void setProductManager(ProductManager productManager) {
    30 this.productManager = productManager;
    31 }
    32
    33 public String insert() {
    34 productManager.insertProduct(product);
    35 return SUCCESS;
    36 }
    37
    38 public String search() {
    39 List results = productManager.searchProducts(queryString);
    40 System.out.println(results.size());
    41 ServletActionContext.getRequest()
    42 .setAttribute("searchresults", results);
    43 return SUCCESS;
    44 }
    45
    46 }

    /compass1/src/com/v512/example/dao/ProductDao.java

     1 package com.v512.example.dao;
    2
    3 import java.util.List;
    4
    5 import com.v512.example.model.Product;
    6
    7 public interface ProductDao {
    8 public void create(Product p);
    9
    10 public Product getProduct(String id);
    11
    12 public List getProducts();
    13
    14 public void update(Product product);
    15
    16 public void remove(String id);
    17
    18 }

    /compass1/src/com/v512/example/dao/hibernate/ProductDaoHibernate.java

     1 package com.v512.example.dao.hibernate;
    2
    3 import java.util.List;
    4
    5 import com.v512.example.dao.ProductDao;
    6 import com.v512.example.model.Product;
    7 import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
    8
    9 public class ProductDaoHibernate extends HibernateDaoSupport implements
    10 ProductDao {
    11
    12 public void create(Product p) {
    13 getHibernateTemplate().save(p);
    14
    15 }
    16
    17 public Product getProduct(String id) {
    18 return (Product) getHibernateTemplate().get(Product.class, id);
    19 }
    20
    21 public List getProducts() {
    22 return getHibernateTemplate().find("from Product order by id desc");
    23 }
    24
    25 public void remove(String id) {
    26 getHibernateTemplate().delete(getProduct(id));
    27
    28 }
    29
    30 public void update(Product product) {
    31 getHibernateTemplate().saveOrUpdate(product);
    32
    33 }
    34
    35 }

    /compass1/src/com/v512/example/model/Product.java

    在实体类中注入compass

     1 package com.v512.example.model;
    2
    3 import org.compass.annotations.*;
    4
    5 /**
    6 * Product entity.
    7 *
    8 * @author MyEclipse Persistence Tools
    9 */
    10 @Searchable
    11 public class Product implements java.io.Serializable {
    12
    13 // Fields
    14 //在实体类中注入compass
    15 @SearchableId
    16 private String id;
    17 @SearchableProperty(name = "name")
    18 private String name;
    19 @SearchableProperty(name = "price")
    20 private Double price;
    21 @SearchableProperty(name = "brand")
    22 private String brand;
    23 @SearchableProperty(name = "description")
    24 private String description;
    25
    26 // Constructors
    27
    28 /** default constructor */
    29 public Product() {
    30 }
    31
    32 /** full constructor */
    33 public Product(String name, Double price, String brand, String description) {
    34 this.name = name;
    35 this.price = price;
    36 this.brand = brand;
    37 this.description = description;
    38 }
    39
    40 // Property accessors
    41
    42 public String getId() {
    43 return this.id;
    44 }
    45
    46 public void setId(String id) {
    47 this.id = id;
    48 }
    49
    50 public String getName() {
    51 return this.name;
    52 }
    53
    54 public void setName(String name) {
    55 this.name = name;
    56 }
    57
    58 public Double getPrice() {
    59 return this.price;
    60 }
    61
    62 public void setPrice(Double price) {
    63 this.price = price;
    64 }
    65
    66 public String getBrand() {
    67 return this.brand;
    68 }
    69
    70 public void setBrand(String brand) {
    71 this.brand = brand;
    72 }
    73
    74 public String getDescription() {
    75 return this.description;
    76 }
    77
    78 public void setDescription(String description) {
    79 this.description = description;
    80 }
    81
    82 }

    /compass1/src/com/v512/example/model/Product.hbm.xml

     1 <?xml version="1.0" encoding="utf-8"?>
    2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    4 <!--
    5 Mapping file autogenerated by MyEclipse Persistence Tools
    6 -->
    7 <hibernate-mapping>
    8 <class name="com.v512.example.model.Product" table="PRODUCT" schema="SCOTT">
    9 <id name="id" type="java.lang.String">
    10 <column name="ID" length="40" />
    11 <generator class="uuid.hex" />
    12 </id>
    13 <property name="name" type="java.lang.String">
    14 <column name="NAME" length="80" />
    15 </property>
    16 <property name="price" type="java.lang.Double">
    17 <column name="PRICE" precision="6" />
    18 </property>
    19 <property name="brand" type="java.lang.String">
    20 <column name="BRAND" length="40" />
    21 </property>
    22 <property name="description" type="java.lang.String">
    23 <column name="DESCRIPTION" length="2000" />
    24 </property>
    25 </class>
    26 </hibernate-mapping>

    /compass1/src/com/v512/example/service/ProductManager.java

     1 package com.v512.example.service;
    2
    3 import java.util.List;
    4
    5 import com.v512.example.model.Product;
    6
    7 public interface ProductManager {
    8 public void insertProduct(Product p);
    9
    10 public Product findProdcut(String id);
    11
    12 public List searchProducts(String queryString);
    13
    14 }

    /compass1/src/com/v512/example/service/impl/CompassIndexBuilder.java

     1 package com.v512.example.service.impl;
    2
    3 import org.compass.gps.CompassGps;
    4 import org.springframework.beans.factory.InitializingBean;
    5
    6 /**
    7 * 通过quartz定时调度定时重建索引或自动随Spring ApplicationContext启动而重建索引的Builder.
    8 * 会启动后延时数秒新开线程调用compassGps.index()函数.
    9 * 默认会在Web应用每次启动时重建索引,可以设置buildIndex属性为false来禁止此功能. 也可以不用本Builder,
    10 * 编写手动调用compassGps.index()的代码.
    11 *
    12 */
    13 public class CompassIndexBuilder implements InitializingBean {
    14 // 是否需要建立索引,可被设置为false使本Builder失效.
    15 private boolean buildIndex = false;
    16
    17 // 索引操作线程延时启动的时间,单位为秒
    18 private int lazyTime = 10;
    19
    20 // Compass封装
    21 private CompassGps compassGps;
    22
    23 // 索引线程
    24 private Thread indexThread = new Thread() {
    25
    26 @Override
    27 public void run() {
    28 try {
    29 Thread.sleep(lazyTime * 1000);
    30 System.out.println("begin compass index...");
    31 long beginTime = System.currentTimeMillis();
    32 // 重建索引.
    33 // 如果compass实体中定义的索引文件已存在,索引过程中会建立临时索引,
    34 // 索引完成后再进行覆盖.
    35 compassGps.index();
    36 long costTime = System.currentTimeMillis() - beginTime;
    37 System.out.println("compss index finished.");
    38 System.out.println("costed " + costTime + " milliseconds");
    39 } catch (InterruptedException e) {
    40 e.printStackTrace();
    41 }
    42 }
    43 };
    44
    45 /**
    46 * 实现<code>InitializingBean</code>接口,在完成注入后调用启动索引线程.
    47 *
    48 * @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet()
    49 */
    50 public void afterPropertiesSet() throws Exception {
    51 if (buildIndex) {
    52 indexThread.setDaemon(true);
    53 indexThread.setName("Compass Indexer");
    54 indexThread.start();
    55 }
    56 }
    57
    58 public void setBuildIndex(boolean buildIndex) {
    59 this.buildIndex = buildIndex;
    60 }
    61
    62 public void setLazyTime(int lazyTime) {
    63 this.lazyTime = lazyTime;
    64 }
    65
    66 public void setCompassGps(CompassGps compassGps) {
    67 this.compassGps = compassGps;
    68 }
    69 }

    /compass1/src/com/v512/example/service/impl/ProductManagerImpl.java

     1 package com.v512.example.service.impl;
    2
    3 import java.util.ArrayList;
    4 import java.util.List;
    5
    6 import org.compass.core.CompassHits;
    7 import org.compass.core.CompassSession;
    8 import org.compass.core.CompassTemplate;
    9 import org.compass.core.CompassTransaction;
    10
    11 import com.v512.example.dao.ProductDao;
    12 import com.v512.example.model.Product;
    13 import com.v512.example.service.ProductManager;
    14 import org.compass.core.Compass;
    15
    16 public class ProductManagerImpl implements ProductManager {
    17 private ProductDao productDao;
    18 private CompassTemplate compassTemplate;
    19
    20 public void setCompassTemplate(CompassTemplate compassTemplate) {
    21 this.compassTemplate = compassTemplate;
    22 }
    23
    24 public void setProductDao(ProductDao productDao) {
    25 this.productDao = productDao;
    26 }
    27
    28 public Product findProdcut(String id) {
    29 return productDao.getProduct(id);
    30 }
    31
    32 public void insertProduct(Product p) {
    33 productDao.create(p);
    34
    35 }
    36
    37 public List searchProducts(String queryString) {
    38 Compass compass = compassTemplate.getCompass();
    39 CompassSession session = compass.openSession();
    40 List list = new ArrayList();
    41
    42 CompassHits hits = session.queryBuilder().queryString(
    43 "name:" + queryString).toQuery().hits();
    44 System.out.println("queryString:" + queryString);
    45 System.out.println("hits:" + hits.getLength());
    46 for (int i = 0; i < hits.length(); i++) {
    47 Product hit = (Product) hits.data(i);
    48 list.add(hit);
    49 }
    50
    51 return list;
    52 }
    53
    54 public CompassTemplate getCompassTemplate() {
    55 return compassTemplate;
    56 }
    57
    58 }

    /compass1/src/paoding-dic-home.properties

    paoding.dic.home=C:/paoding/dic
    paoding.dic.detector.interval=60

    /compass1/src/struts.xml

     1 <?xml version="1.0" encoding="UTF-8" ?>
    2 <!DOCTYPE struts PUBLIC
    3 "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    4 "http://struts.apache.org/dtds/struts-2.0.dtd">
    5
    6 <struts>
    7 <constant name="struts.objectFactory" value="spring" />
    8
    9 <include file="struts-default.xml" />
    10
    11 <package name="product" extends="struts-default" namespace="/product">
    12 <!-- 配置Struts2的Action,class值要与applicationContext*.xml中的id的值一致。 -->
    13 <action name="insert" class="productBean" method="insert">
    14 <result>insertOk.jsp</result>
    15 </action>
    16 <action name="search" class="productBean" method="search">
    17 <result>searchResults.jsp</result>
    18 </action>
    19
    20
    21 </package>
    22
    23
    24
    25
    26 </struts>

    /compass1/WebRoot/product/input.jsp

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
    2 pageEncoding="UTF-8"%>
    3 <%@ taglib prefix="s" uri="/struts-tags"%>
    4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    5 <html>
    6 <head>
    7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    8 <link href="style/oa.css" rel="stylesheet" type="text/css">
    9
    10 <title>添加信息</title>
    11 </head>
    12 <body>
    13 <center>
    14 <s:form action="insert.action" theme="simple">
    15
    16 <TABLE class="tableEdit" border="0" cellspacing="1" cellpadding="0" style="300px;">
    17 <TBODY>
    18 <TR>
    19 <td align="center" class="tdEditTitle">添加商品名称</TD>
    20 </TR>
    21 <TR>
    22 <td>
    23
    24
    25 <table class="tableEdit" style="300px;" cellspacing="0" border="0" cellpadding="0">
    26 <tr>
    27 <td class="tdEditLabel" >商品名称</td>
    28 <td class="tdEditContent"><s:textfield name="product.name" label="名称" /></td>
    29 </tr>
    30
    31 <tr>
    32 <td class="tdEditLabel" >商品品牌</td>
    33 <td class="tdEditContent"><s:textfield name="product.brand" label="品牌" /></td>
    34 </tr>
    35
    36 <tr>
    37 <td class="tdEditLabel" >商品价格</td>
    38 <td class="tdEditContent"><s:textfield name="product.price" label="价格" /></td>
    39 </tr>
    40
    41 <tr>
    42 <td class="tdEditLabel" >商品描述</td>
    43 <td class="tdEditContent"><s:textarea name="product.description" label="描述" />
    44 </td>
    45 </tr>
    46 <tr>
    47 <td>&nbsp;
    48 </td>
    49 <td><s:submit/>
    50 <br></td>
    51 </tr>
    52 </table>
    53 </td>
    54 </TR>
    55 </TBODY>
    56 </TABLE>
    57 </s:form>
    58 </center>
    59 </body>
    60 </html>

    /compass1/WebRoot/product/insertOk.jsp

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
    2 pageEncoding="UTF-8"%>
    3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    4 <html>
    5 <head>
    6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    7 <title>Insert title here</title>
    8 </head>
    9 <body>
    10 添加商品成功!
    11
    12 </body>
    13 </html>

    /compass1/WebRoot/product/search.jsp

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
    2 pageEncoding="UTF-8"%>
    3 <%@taglib prefix="s" uri="/struts-tags" %>
    4
    5 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    6 <html>
    7 <head>
    8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    9 <title>Insert title here</title>
    10 </head>
    11 <body>
    12 <s:form action="search.action" method="post">
    13 <s:textfield name="queryString" label="搜索产品"/>
    14 <s:submit></s:submit>
    15 </s:form>
    16
    17
    18 </body>
    19 </html>

    /compass1/WebRoot/product/searchResults.jsp

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
    2 import="java.util.List"
    3 pageEncoding="UTF-8"%>
    4 <%@taglib prefix="s" uri="/struts-tags" %>
    5
    6 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    7 <html>
    8 <head>
    9 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    10 <title>Insert title here</title>
    11 </head>
    12 <body>
    13 <%
    14
    15 if(((List)request.getAttribute("searchresults")).size()==0){
    16 %>
    17 no results found.
    18 <%} %>
    19
    20 <table border="1">
    21 <s:iterator value="#request.searchresults">
    22 <tr><td>
    23 <s:property value="name"/>
    24 </td>
    25 <td>
    26
    27 <s:property value="price"/></td>
    28 <td>
    29
    30 <s:property value="brand"/></td>
    31 <td>
    32
    33 <s:property value="description"/></td>
    34 </tr>
    35 </s:iterator>
    36 </table>
    37
    38 </body>
    39 </html>

    /compass1/WebRoot/WEB-INF/applicationContext-compass.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
    2
    3 <beans xmlns="http://www.springframework.org/schema/beans"
    4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    5 xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
    6 default-lazy-init="true">
    7
    8
    9 <bean id="annotationConfiguration"
    10 class="org.compass.annotations.config.CompassAnnotationsConfiguration">
    11 </bean>
    12
    13
    14 <bean id="compass" class="org.compass.spring.LocalCompassBean">
    15 <property name="resourceDirectoryLocations">
    16 <list>
    17 <value>classpath:com/v512</value>
    18 </list>
    19 </property>
    20 <property name="connection">
    21 <value>/lucene/indexes</value>
    22 </property>
    23
    24
    25 <property name="classMappings">
    26 <list>
    27 <value>com.v512.example.model.Product</value>
    28 </list>
    29 </property>
    30 <property name="compassConfiguration"
    31 ref="annotationConfiguration" />
    32
    33 <property name="compassSettings">
    34 <props>
    35 <prop key="compass.transaction.factory">
    36 org.compass.spring.transaction.SpringSyncTransactionFactory
    37 </prop>
    38 <prop key="compass.engine.analyzer.MMAnalyzer.CustomAnalyzer">net.paoding.analysis.analyzer.PaodingAnalyzer </prop>
    39 </props>
    40 </property>
    41
    42 <property name="transactionManager" ref="transactionManager" />
    43 </bean>
    44
    45
    46 <bean id="hibernateGpsDevice"
    47 class="org.compass.gps.device.hibernate.HibernateGpsDevice">
    48 <property name="name">
    49 <value>hibernateDevice</value>
    50 </property>
    51 <property name="sessionFactory" ref="sessionFactory" />
    52 <property name="mirrorDataChanges">
    53 <value>true</value>
    54 </property>
    55 </bean>
    56 <!-- 同步更新索引 -->
    57 <bean id="compassGps" class="org.compass.gps.impl.SingleCompassGps"
    58 init-method="start" destroy-method="stop">
    59 <property name="compass" ref="compass" />
    60 <property name="gpsDevices">
    61 <list>
    62 <bean
    63 class="org.compass.spring.device.SpringSyncTransactionGpsDeviceWrapper">
    64 <property name="gpsDevice" ref="hibernateGpsDevice" />
    65 </bean>
    66 </list>
    67 </property>
    68 </bean>
    69
    70
    71 <bean id="compassTemplate"
    72 class="org.compass.core.CompassTemplate">
    73 <property name="compass" ref="compass" />
    74 </bean>
    75
    76 <!-- 定时重建索引(利用quartz)或随Spring ApplicationContext启动而重建索引 -->
    77 <bean id="compassIndexBuilder"
    78 class="com.v512.example.service.impl.CompassIndexBuilder"
    79 lazy-init="false">
    80 <property name="compassGps" ref="compassGps" />
    81 <property name="buildIndex" value="true" />
    82 <property name="lazyTime" value="10" />
    83 </bean>
    84
    85
    86
    87 </beans>

    /compass1/WebRoot/WEB-INF/applicationContext.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
    2 <beans xmlns="http://www.springframework.org/schema/beans"
    3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4 xmlns:aop="http://www.springframework.org/schema/aop"
    5 xmlns:tx="http://www.springframework.org/schema/tx"
    6 xsi:schemaLocation="
    7 http://www.springframework.org/schema/beans
    8 http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    9 http://www.springframework.org/schema/tx
    10 http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
    11 http://www.springframework.org/schema/aop
    12 http://www.springframework.org/schema/aop/spring-aop-2.5.xsd" default-lazy-init="true">
    13
    14
    15 <!-- 定义数据源的Bean ,给Hibernate的sessionFactory-->
    16 <bean id="dataSource"
    17 class="org.apache.commons.dbcp.BasicDataSource">
    18 <property name="driverClassName"
    19 value="oracle.jdbc.driver.OracleDriver">
    20 </property>
    21 <property name="url"
    22 value="jdbc:oracle:thin:@192.168.1.3:1521:ora9">
    23 </property>
    24 <property name="username" value="scott"></property>
    25 <property name="password" value="tiger"></property>
    26 </bean>
    27
    28 <!-- 定义Hibernate的sessionFactory,通过该Bean,可以获得Hibernate的Session-->
    29 <bean id="sessionFactory"
    30 class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    31 <property name="dataSource">
    32 <ref bean="dataSource" />
    33 </property>
    34 <property name="hibernateProperties">
    35 <props>
    36 <prop key="hibernate.dialect">
    37 org.hibernate.dialect.Oracle9Dialect
    38 </prop>
    39 <!--设置二级缓冲-->
    40 <prop key="hibernate.cache.provider_class">
    41 org.hibernate.cache.EhCacheProvider
    42 </prop>
    43 <!--设置二级缓冲,打开查询缓冲-->
    44 <prop key="hibernate.cache.use_query_cache">true</prop>
    45 <!--设置显示Hibernate操作的SQL语句-->
    46 <prop key="hibernate.show_sql">true</prop>
    47 </props>
    48 </property>
    49 <property name="mappingResources">
    50 <list>
    51 <value>
    52 com/v512/example/model/Product.hbm.xml
    53 </value>
    54 </list>
    55 </property>
    56 </bean>
    57
    58 <bean id="productDao" class="com.v512.example.dao.hibernate.ProductDaoHibernate">
    59 <property name="sessionFactory" ref="sessionFactory"></property>
    60 </bean>
    61 <bean id="productManager" class="com.v512.example.service.impl.ProductManagerImpl">
    62 <property name="productDao" ref="productDao"></property>
    63 <property name="compassTemplate" ref="compassTemplate"></property>
    64 </bean>
    65
    66 <bean id="productBean" class="com.v512.example.action.ProductAction" scope="prototype">
    67 <property name="productManager" ref="productManager"></property>
    68
    69 </bean>
    70
    71
    72 <!-- 配置事务管理器 -->
    73 <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    74 <property name="sessionFactory">
    75 <ref local="sessionFactory"/>
    76 </property>
    77 </bean>
    78
    79 <!-- 配置事务特性 ,配置add、delete和update开始的方法,事务传播特性为required-->
    80 <tx:advice id="txAdvice" transaction-manager="transactionManager">
    81 <tx:attributes>
    82 <tx:method name="insert*" propagation="REQUIRED"/>
    83 <tx:method name="delete*" propagation="REQUIRED"/>
    84 <tx:method name="update*" propagation="REQUIRED"/>
    85 <tx:method name="*" read-only="true"/>
    86 </tx:attributes>
    87 </tx:advice>
    88
    89 <!-- 配置那些类的方法进行事务管理,当前cn.com.jobedu.oa.service包中的子包、类中所有方法需要,还需要参考tx:advice的设置 -->
    90 <aop:config>
    91 <aop:pointcut id="allManagerMethod" expression="execution (* com.v512.example.service.*.*(..))"/>
    92 <aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod"/>
    93 </aop:config>
    94
    95
    96 </beans>

    /compass1/WebRoot/WEB-INF/web.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
    2 <web-app version="2.5"
    3 xmlns="http://java.sun.com/xml/ns/javaee"
    4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    5 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    6 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    7
    8 <!--定义Spring的配置的位置,可以定义多个配置文件,可以使用通配符。 -->
    9 <context-param>
    10 <param-name>contextConfigLocation</param-name>
    11 <param-value>/WEB-INF/applicationContext*.xml</param-value>
    12 </context-param>
    13 <!--设置一起动当前的Web应用,就加载Spring,让Spring管理Bean-->
    14 <listener>
    15 <listener-class>
    16 org.springframework.web.context.ContextLoaderListener
    17 </listener-class>
    18 </listener>
    19 <!--解决Hibernate延迟加载出现的问题,需要放到struts2过滤器之前-->
    20 <filter>
    21 <filter-name>lazyLoadingFilter</filter-name>
    22 <filter-class>
    23 org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
    24 </filter-class>
    25 </filter>
    26
    27 <!--Struts2的过滤器,使用Struts2,必须配置该项-->
    28 <filter>
    29 <filter-name>struts2</filter-name>
    30 <filter-class>
    31 org.apache.struts2.dispatcher.FilterDispatcher
    32 </filter-class>
    33 </filter>
    34
    35
    36 <!--解决Hibernate延迟加载出现的问题,仍需要放到struts2过滤器mapping之前-->
    37 <filter-mapping>
    38 <filter-name>lazyLoadingFilter</filter-name>
    39 <url-pattern>*.action</url-pattern>
    40 </filter-mapping>
    41 <!--Struts2的过滤器,配套的filter-mapping-->
    42 <filter-mapping>
    43 <filter-name>struts2</filter-name>
    44 <url-pattern>/*</url-pattern>
    45 </filter-mapping>
    46
    47
    48
    49
    50
    51
    52 <welcome-file-list>
    53 <welcome-file>index.jsp</welcome-file>
    54 </welcome-file-list>
    55 </web-app>

                                                                                  感谢v512刘伟teacher

  • 相关阅读:
    MySQL++:Liunx
    MySQL++:liunx 安装 MySQL
    MySQL++:MySQL 相关机制参数解释说明
    linux++:Linux
    linux++:基本操作命令
    coding++:java正则表达式获取指定HTML标签的指定属性值
    mongodb++:mongodb 基本语法
    xml模块
    shelve模块简单用法
    shutil模块
  • 原文地址:https://www.cnblogs.com/hongten/p/spring_hibernate_struts2_compass.html
Copyright © 2020-2023  润新知