最近,我的朋友问我如何构建轻量级的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. spring包镜像下载地址
  2. JavaScript获取样式值的几种方法学习总结
  3. 从浏览器输入URL到最终看到页面, 这其中经历了哪些过程 ?
  4. Apache Shiro实现用户登录功能
  5. JAVA——JScrollbar 滚动条自动滚动到底端解决方案
  6. Java设计模式之行为型:访问者模式
  7. (转)更新Java final常量后,请重新编译你的class
  8. Android多媒体学习五:调用Android自带的播放器播放Audio
  9. About “PostMessage” SendMessage
  10. 创立微积分的两场风波
  11. txt 开关 csv 可通用 工具
  12. 动态规划——环形子数组的最大和(Leetcode 918)
  13. O036、Snapshot Instance 操作详解
  14. setTimeout(〒︿〒) 请原谅我一直以来对你的忽视
  15. 数据结构与算法--图的概念
  16. LINUX的VirtualBox安装Windows7
  17. Tableau 发布到tableau online错误
  18. 【sketchup 2021】草图大师的场景优化工具2【草图大师动态组件的详细使用说明和各个函数说明】【重要】
  19. java开发团队认知_一个优秀的研发团队应该具备什么特征
  20. 经典圣诞老人题----同步与互斥

热门文章

  1. 基本数据类型与字符串的转换
  2. java插入排序_Java程序要插入排序
  3. 程序员 rs编码_为什么声明性编码使您成为更好的程序员
  4. spring 注释_Spring @Value注释
  5. jdk11 javafx_JDK 11上的JavaFX
  6. switch字符串jdk_应用新的JDK 11字符串方法
  7. jboss fuse 教程_使用JBoss Fuse和OpenShift进行Cloud Native Camel骑行
  8. 浏览器总是跳转到缓存界面_跳转到企业缓存之前要考虑的事项
  9. spring batch_Spring Batch作为Wildfly模块
  10. 什么是序列化? 您需要通过示例解释的有关Java序列化的所有知识