首页 > 代码库 > 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&useUnicode=true&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的使用(九)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。