首页 > 代码库 > guice整合struts2与jpa,guice的使用(九)

guice整合struts2与jpa,guice的使用(九)

传统我们开发一般使用ssh,但是有些微服务应用的项目我们不需要这么臃肿的框架做开发,于是采用了guice+struts2+guice作为框架组合进行了开发。

 

先看我们项目引用的jar包:

技术分享

使用的时候一定要主要jar的版本问题.我项目在jdk1.7上面开发的

 

然后看一下web.xml的配置:

 1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> 3   <filter> 4     <filter-name>guiceFilter</filter-name> 5     <filter-class>com.google.inject.servlet.GuiceFilter</filter-class> 6   </filter> 7   <filter-mapping> 8     <filter-name>guiceFilter</filter-name> 9     <url-pattern>/*</url-pattern>10   </filter-mapping>11   <listener>12     <listener-class>com.ming.core.web.listener.GoogleGuiceServletContextListener</listener-class>13   </listener>14   15   <welcome-file-list>16     <welcome-file>index.jsp</welcome-file>17   </welcome-file-list>18 </web-app>

然后是struts.xml的配置:

 1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE struts PUBLIC 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" 4     "http://struts.apache.org/dtds/struts-2.3.dtd"> 5  6 <struts> 7     <!-- 引用guice代理 --> 8     <constant name="struts.objectFactory" value="guice" /> 9     <constant name="struts.i18n.encoding" value="UTF-8" />    10     <constant name="struts.enable.DynamicMethodInvocation" value="true"/>11     <include file="com/ming/user/action/userStruts.xml"></include>12 </struts>

然后是jpa的persistence.xml的配置:

 1 <persistence xmlns="http://java.sun.com/xml/ns/persistence" 2     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3     xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" 4     version="2.0"> 5     <persistence-unit name="myunit" transaction-type="RESOURCE_LOCAL"> 6  7         <provider>org.hibernate.ejb.HibernatePersistence</provider> 8         <class>com.ming.user.entity.Student</class> 9         <properties>10             <property name="hibernate.connection.provider_class"11                 value="org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider" />12             <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />13             <property name="hibernate.c3p0.max_size" value="2" />14             <property name="hibernate.c3p0.min_size" value="1" />15             <property name="hibernate.c3p0.timeout" value="120" />16             <property name="hibernate.c3p0.max_statements" value="100" />17             <property name="hibernate.c3p0.idle_test_period" value="120" />18             <property name="hibernate.c3p0.acquire_increment" value="1" />19             <property name="hibernate.show_sql" value="true" />20             <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />21             <property name="hibernate.connection.url"22                 value="jdbc:mysql://localhost:3306/test?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=gbk" />23             <property name="hibernate.connection.username" value="root" />24             <property name="hibernate.connection.password" value="root" />25             <property name="hibernate.temp.use_jdbc_metadata_defaults"26                 value="false" />27         </properties>28 29         <!-- <properties> <property name="hibernate.dialect" value="http://www.mamicode.com/org.hibernate.dialect.MySQL5Dialect" 30             /> <property name="hibernate.connection.driver_class" value="http://www.mamicode.com/com.mysql.jdbc.Driver" 31             /> <property name="hibernate.connection.driver" value="http://www.mamicode.com/com.mysql.jdbc.Driver" 32             /> <property name="hibernate.connection.url" value="http://www.mamicode.com/jdbc:mysql://localhost:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8" 33             /> <property name="hibernate.connection.user" value="http://www.mamicode.com/root" /> <property name="hibernate.connection.password" 34             value="http://www.mamicode.com/root" /> <property name="hibernate.temp.use_jdbc_metadata_defaults" 35             value="http://www.mamicode.com/false"/> </properties> -->36     </persistence-unit>37 </persistence>

然后是module的一些配置:

package com.ming.core.web.listener;import com.google.inject.Guice;import com.google.inject.Injector;import com.google.inject.servlet.GuiceServletContextListener;import com.ming.user.UserModule;public class GoogleGuiceServletContextListener extends GuiceServletContextListener {    @Override    protected Injector getInjector() {                return Guice.createInjector(new UserModule());        //如果绑定多个module,需要像下面这样就可以了        //return Guice.createInjector(new UserModule(),new UserModule());    }}
package com.ming.user;import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter;import com.google.inject.AbstractModule;import com.google.inject.Singleton;import com.google.inject.persist.PersistFilter;import com.google.inject.persist.jpa.JpaPersistModule;import com.google.inject.servlet.ServletModule;import com.google.inject.struts2.Struts2GuicePluginModule;public class UserModule extends AbstractModule {    @Override    protected void configure() {        install(new ServletModule(){            @Override            protected void configureServlets() {                install(new JpaPersistModule("myunit")); //这个一定要写最前面                install(new Struts2GuicePluginModule());//这个是struts2与guice组件结合的注入                bind(StrutsPrepareAndExecuteFilter.class).in(Singleton.class);//这个类似struts2的那个过滤                filter("/*").through(StrutsPrepareAndExecuteFilter.class);                filter("/*").through(PersistFilter.class);            }        });        }    }

以上是几个重要的配置文件。

下面是项目结构:

技术分享

 

 注意persistence.xml这个配置文件要放在src下的META-INF下。

 

框架例子下载:源码下载

 

guice整合struts2与jpa,guice的使用(九)