最近,我的朋友问我如何构建轻量级的Java Web应用程序。 许多Java Web开发人员会选择Spring和Hibernate来构建传统的Web应用程序。 但是,它可能不够轻巧。 我建议他尝试使用Guice和MyBatis构建应用程序框架。 尽管Spring比Guice功能更丰富,但我承认Guice更轻巧且易于使用。 MyBatis还是一个轻量级的SQL映射框架。 它可以很好地与Guice框架集成。

在这里,我将尝试使用PrimeFaces,Guice和MyBatis建立一个简单的Web应用程序。 我希望我的朋友可以学习如何做。

集成MyFaces和PrimeFaces很简单。 只需从MyFaces网站和PrimeFaces网站获取JARS文件。

对于MyFaces,只需将以下示例配置添加到您的web.xml中。

<display-name>TestGuice</display-name>
<context-param><param-name>facelets.DEVELOPMENT</param-name><param-value>false</param-value></context-param><context-param><param-name>facelets.REFRESH_PERIOD</param-name><param-value>2</param-value></context-param><context-param><param-name>javax.faces.CONFIG_FILES</param-name><param-value>/WEB-INF/faces-config.xml</param-value></context-param><context-param><param-name>javax.faces.STATE_SAVING_METHOD</param-name><param-value>client</param-value></context-param><context-param><param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name><param-value>resources.application</param-value></context-param><context-param><param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name><param-value>true</param-value></context-param><context-param><param-name>org.apache.myfaces.AUTO_SCROLL</param-name><param-value>false</param-value></context-param><context-param><param-name>org.apache.myfaces.DETECT_JAVASCRIPT</param-name><param-value>false</param-value></context-param><context-param><param-name>org.apache.myfaces.ERROR_HANDLING</param-name><param-value>false</param-value></context-param><context-param><param-name>org.apache.myfaces.EXPRESSION_FACTORY</param-name><param-value>org.jboss.el.ExpressionFactoryImpl</param-value></context-param><context-param><param-name>org.apache.myfaces.PRETTY_HTML</param-name><param-value>false</param-value></context-param><welcome-file-list><welcome-file>index.do</welcome-file></welcome-file-list><servlet><servlet-name>Faces Servlet</servlet-name><servlet-class>org.apache.myfaces.webapp.MyFacesServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>Faces Servlet</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping>

对于PrimeFaces,应该没有配置。 如果要使用PrimeFaces主题,可以在web.xml中添加以下上下文参数。

<context-param><param-name>primefaces.THEME</param-name><param-value>glass-x</param-value></context-param>

Google Guice将用作IOC容器。 服务类和SQL映射器类的依赖注入通过Guice完成。 为了与JSF集成,我建议简单地添加一个ServletContextListener来实现。

在您的web.xml中添加以下配置:

<listener><listener-class>org.borislam.GuiceContextListener</listener-class></listener>

在ServletContextListener内部,只需创建一个Guice Injector并将其放入ServletContext中:

public class GuiceContextListener implements ServletContextListener {public void contextDestroyed(ServletContextEvent servletContextEvent) {ServletContext servletContext = servletContextEvent.getServletContext();servletContext.removeAttribute(Injector.class.getName());}public void contextInitialized(ServletContextEvent servletContextEvent) {Injector injector = Guice.createInjector(new MyBatisModule() {@Overrideprotected void initialize() {         //add singleton service classbind(SimpleService.class).to(SimpleServiceImpl.class).in(Singleton.class); });ServletContext servletContext = servletContextEvent.getServletContext();servletContext.setAttribute(Injector.class.getName(), injector);}
}

在基础支持bean中,通过PostConstruct方法获取Guice注入器。 然后,Web应用程序中的每个后备bean都需要扩展此基本后备bean。

package org.borislam.view;import java.io.Serializable;import javax.annotation.PostConstruct;
import javax.faces.context.FacesContext;
import javax.servlet.ServletContext;import com.google.inject.Injector;public abstract class BasePageBean implements Serializable{private Injector injector;public BasePageBean() {}public Injector getInjector() {if(injector == null) {ServletContext servletContext = (ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext();injector = (Injector)servletContext.getAttribute(Injector.class.getName());  }return injector;}public void setInjector(Injector injector) {this.injector = injector;}@PostConstructpublic void init() {getInjector().injectMembers(this);}
}

在第二部分中 ,我将继续演示如何集成MyBatis和Guice。

参考: 轻量级Web应用程序框架:来自我们的JCG合作伙伴 Boris Lam的PrimeFaces(JSF)+ Guice + MyBatis(PART1) ,位于“ Programming Peaceally”博客中。

翻译自: https://www.javacodegeeks.com/2013/01/lightweight-web-application-primefaces-jsf-guice-mybatis-part-1.html

轻量级Web应用程序:PrimeFaces(JSF)+ Guice + MyBatis(第1部分)相关推荐

  1. primefaces_轻量级Web应用程序:PrimeFaces(JSF)+ Guice + MyBatis(第1部分)

    primefaces 最近,我的朋友问我如何构建轻量级的Java Web应用程序. 许多Java Web开发人员会选择Spring和Hibernate来构建传统的Web应用程序. 但是,它可能不够轻巧 ...

  2. primefaces_轻量级Web应用程序框架:PrimeFaces(JSF)+ Guice + MyBatis(第2部分)

    primefaces 在这一部分中,我将继续演示JSF,Guice和MyBatis的集成. 在持久层中使用DBCP连接池和MYSQL数据库. 看一下第1部分 . 在上一篇文章中 ,我们创建了一个Ser ...

  3. 轻量级Web应用程序框架:PrimeFaces(JSF)+ Guice + MyBatis(第2部分)

    在这一部分中,我将继续演示JSF,Guice和MyBatis的集成. 在持久层中使用DBCP连接池和MYSQL数据库. 看一下第1部分 . 在上一篇文章中 ,我们创建了一个ServletContext ...

  4. jpa jsf_完整的Web应用程序Tomcat JSF Primefaces JPA Hibernate –第1部分

    jpa jsf 我们创建了这篇文章,将展示如何使用以下工具创建完整的Web应用程序:Tomcat7,带有Primefaces的JSF2(Facelets和Libraries)(具有AutoComple ...

  5. jpa jsf_完整Web应用程序Tomcat JSF Primefaces JPA Hibernate –第2部分

    jpa jsf 托管豆 这篇文章是本教程第1部分的继续. 在" com.mb"包中,您将需要创建以下类: package com.mb;import org.primefaces. ...

  6. jpa jsf_完整的Web应用程序Tomcat JSF Primefaces JPA Hibernate –第3部分

    jpa jsf Primefaces AutoComplete,JSF转换器 这篇文章从第一部分和第二部分继续. JSF拥有Converter工具,可以帮助我们从用户视图中获取一些数据并将其转换为从数 ...

  7. 完整的Web应用程序Tomcat JSF Primefaces JPA Hibernate –第1部分

    我们创建了这篇文章,将展示如何使用以下工具创建完整的Web应用程序:Tomcat7,带有Primefaces的JSF2(Facelets和Libraries)(具有AutoComplete),JPA ...

  8. 完整的Web应用程序Tomcat JSF Primefaces JPA Hibernate –第2部分

    托管豆 这篇文章是本教程第1部分的继续. 在" com.mb"包中,您将需要创建以下类: package com.mb;import org.primefaces.context. ...

  9. 完整的Web应用程序Tomcat JSF Primefaces JPA Hibernate –第3部分

    Primefaces AutoComplete,JSF转换器 这篇文章从第一部分和第二部分继续. JSF拥有Converter工具,可以帮助我们从用户视图中获取一些数据并将其转换为从数据库或缓存中加载 ...

最新文章

  1. java oracle行锁,Oracle 出现行锁 错误代码 ora-02049
  2. python大神-Python大神都是这样处理XML文件的!
  3. 设计模式复习-代理模式
  4. SQL Server2019数据库查询所有数据库名、表名、表结构、表字段、主键方法演示,执行sql提示对象名‘user_tab_columns‘、 ‘user_cons_columns‘ 无效问题解决
  5. sql sum嵌套查询+ group by
  6. 大型计算机主机通常采用,全国计算机一级选择题真题集
  7. 打开程序时固定位置_新手入门第五课:免费开源图像处理程序GIMP之矩形选择工具...
  8. java tcp发消息给硬件_java – TCP客户端/服务器通信只发送第一条消息?
  9. set 数据类型的应用场景
  10. c#如何跨线程调用窗体控件
  11. 地理生物高考成绩查询2021,2021北京中考地理生物成绩查询时间【已公布】
  12. linux实验试题 cp,cp命令实验,cp命令
  13. 互联网红利消退,下一个机会在哪?
  14. endnotex9如何导入caj中文文献_EndNote X9常用方法汇总
  15. 传输层协议(7):滑动窗口(1)
  16. unipush配置华为通道
  17. UVALive(LA) 4487 Exclusive-OR(带权并查集)
  18. windows查看wifi密码的多种方式
  19. python自由落体_Javascript摸拟自由落体与上抛运动原理与实现方法详解
  20. AMS1117稳压芯片介绍

热门文章

  1. linux原有的文件系统扩展,原来linux不用LVM也能扩展文件系统
  2. 投票源码程序_[内附完整源码和文档] 基于JSP实现的影视创作论坛系统
  3. 单件模式(单例模式)
  4. javafx 界面_JavaFX的科幻用户界面第1部分
  5. java 函数式编程 示例_功能Java示例 第1部分–从命令式到声明式
  6. 用一个程序生成另一个程序_还有另一个报告生成器?
  7. restful json_Dropwizard:轻松的RESTful JSON HTTP Web服务
  8. JDK 14的征兆开始出现
  9. 使用Spring Boot和Vue进行有益的开发
  10. 非一致性访存系统_Hibernate事实:访存策略的重要性