`

Liferay Hook 中如何调用spring实例化的对象

阅读更多
自己新建的Hook,它是通过配置类名的方式,由Liferay热加载的,所以Hook当中的bean不能通过spring来配置,而我又的确想要spring创建的那些bean,因为这些bean可能创建比较复杂,甚至还包括了一些要传入的property配置信息,该问题可通过取巧,创建一个SpringBeanUtil来实现。RememberMeAutoLoginHook是我的Hook。


public class RememberMeAutoLoginHook implements AutoLogin {

private RememberMeService rememberMeService;

private CookieGenerator cookieGenerator;

@Override
public String[] login(HttpServletRequest request, HttpServletResponse response)
throws AutoLoginException {
System.out.println("RememberMeAutoLoginHook test......"+cookieGenerator);
String credentials[] = new String[2];
//1. Check if rememberMe cookie exists, If so, get the  token from the cookie
// rememberMeService.authenticate (AuthRequest)
String token = null;
Cookie[] cookies = request.getCookies();
if(cookies!=null) {
for (int i = 0; i < cookies.length; i++)   
   {   
      Cookie c = cookies[i];       
      if(c.getName().equalsIgnoreCase(getCookieGenerator().getCtCookiePropertyValue()))   
      {   
      token = c.getValue();   
       }  
   }
}

if (token != null) {
AuthResult authResult = getRememberMeService().authenticate(token);
if (authResult.isSuccess()) {
        Cookie clearTrust = getCookieGenerator().
        createMasterClearTrustCookie(request.getServerName(), authResult.getToken());
response.addCookie(clearTrust);
}else {
return null;
}
}else {
return null;
}

return credentials;
}

public RememberMeService getRememberMeService() {
if (rememberMeService == null) {
rememberMeService = SpringBeanUtil.getInstance().getRememberMeService();
}
System.out.println("RememberMeAutoLoginHook rememberMeService:"+rememberMeService);
return rememberMeService;
}

public CookieGenerator getCookieGenerator() {
if (cookieGenerator == null) {
cookieGenerator = SpringBeanUtil.getInstance().getCookieGenerator();
}
System.out.println("RememberMeAutoLoginHook cookieGenerator:"+cookieGenerator);
return cookieGenerator;
}

}


public class SpringBeanUtil { 
   
    private static SpringBeanUtil instance = new SpringBeanUtil(); 
     
private static RememberMeService rememberMeService;

private static CookieGenerator cookieGenerator;
     
    private SpringBeanUtil () {} 
 
    public static SpringBeanUtil getInstance() { 
        return instance; 
    } 
     
    public void setInstance(SpringBeanUtil newInstance) { 
        instance = newInstance; 
    } 
 
    public RememberMeService getRememberMeService() { 
        return rememberMeService; 
    } 
     
    public void setRememberMeService(RememberMeService rememberMeService) { 
        SpringBeanUtil.rememberMeService = rememberMeService; 
    } 
   
    public CookieGenerator getCookieGenerator() { 
        return cookieGenerator; 
    } 
     
    public void setCookieGenerator(CookieGenerator cookieGenerator) { 
        SpringBeanUtil.cookieGenerator = cookieGenerator; 
    } 
   
     



在pring-context.xml中配置如下:
<bean id="springBeanUtil" class="........SpringBeanUtil">
         <property name="cookieGenerator" ref="cookieGenerator"/>
         <property name="rememberMeService" ref="rememberMeService"/>
</bean>
分享到:
评论

相关推荐

    liferay hook 开发demo

    liferay hook 开发demo,swf格式

    LIFERAY-HOOK 开发指南

    在Liferay框架中,Hook是一种强大的工具,它允许开发者对Liferay核心功能进行扩展和定制,而无需直接修改Liferay源代码。LIFERAY-HOOK开发指南主要涵盖了如何利用Hook实现特定功能的详细步骤,以确保二次开发的代码...

    liferay hook 开发demo 2

    liferay hook 开发demo 2,swf格式

    liferay 内置在jsp中的对象

    但实际上,在Liferay中,我们通常会使用`&lt;liferay-theme:defineObjects/&gt;`标签来自动化这一过程。 #### 5. 注意事项 - 在使用这些内置对象时,需要注意权限和安全问题,确保不会泄露敏感信息。 - 了解每个对象的...

    liferay + struts2 + spring + ibatis整合开发案例

    在Spring中,iBatis可以通过SqlSessionFactory和SqlSession接口进行配置,使得数据库操作更加简洁,易于维护。在本案例中,iBatis作为数据访问层,处理与数据库的交互,如CRUD操作,与Spring的Service层进行协作。 ...

    liferay跨组件间通信实例

    本实例将深入探讨如何在Liferay中进行跨组件通信,并以`test-portlet`为例进行详细讲解。 首先,我们需要理解Liferay中的组件概念。在Liferay中,组件通常指的是portlet、service、布局模板、主题等可重用的代码...

    Liferay7.0自定义登录实例

    在本文中,我们将深入探讨如何在Liferay 7.0中实现自定义登录实例。Liferay是一款开源的企业级门户平台,提供了丰富的功能和强大的定制能力,使得开发者可以根据具体需求进行扩展。自定义登录界面和流程是提升用户...

    liferay-hook-maven-example:通过Maven SDK编写的Liferay Hook示例

    在`liferay-hook-maven-example-master`这个压缩包中,你将找到一个已经初始化好的Liferay Hook项目,包括了上述的各个部分。通过查看源代码,你可以看到如何配置pom.xml,以及如何编写和组织Java代码来实现特定的...

    maven liferay spring hibernate

    在IT行业中,构建大型企业级应用常常涉及到多个技术框架的集成使用。本项目结合了"Maven"、"Liferay"、"Spring"和"Hibernate"这四大核心组件,旨在搭建一个高效、稳定且可扩展的Web应用程序。接下来,我们将详细探讨...

    liferay portal 开发实例

    在这个开发实例中,我们将深入探讨四个Liferay Portal MVC(Model-View-Controller)应用的实践案例,这些实例可以帮助开发者更好地理解如何在Liferay环境中进行portlet开发。 首先,让我们了解MVC模式在Liferay中...

    liferay-spring-portlet

    这个项目展示了如何将Spring与Liferay Portal结合,创建一个可直接部署到Liferay中的WAR包。作者提到他们已经花费了两天的时间来完成这个工作,并期待其他人能从中学习并理解其价值。 【描述】中提到了几个关键知识...

    Liferay 6 入门教程

    此外,"plugins开发指南11-plugin中开发hibernate应用.pdf"涵盖了在Liferay中使用Hibernate进行数据持久化的实践方法,这对于处理复杂业务逻辑至关重要。 "plugins开发指南13-liferay中使用ldap分析.pdf"讨论了...

    liferay 6.2 站点内容发布 ueditor-hook

    在portal-setup-wizard.properties里面加上如下配置。 editor.wysiwyg.portal-web....下载ueditor.jar 放到liferay tomcat 下的Root/web-info/lib/下 下载ueditorhook-hook-6.2.0.1.war 安装即可 重启liferay应用

    liferay门户调用webservice依赖jar包

    在Liferay中,调用Web服务(如SOAP或RESTful Web Services)是通过依赖于特定版本的JAR包来实现的。这些JAR包包含了必要的API和工具,使得Liferay能够与外部系统进行通信,例如数据交换、业务集成等。 在这个场景中...

    liferay development 中文

    7. **国际化与本地化**:Liferay支持多语言环境,开发者需要了解如何为应用程序添加多语言支持,以及如何使用资源包(Resource Bundle)进行本地化。 8. **插件开发**:Liferay提供了多种类型的插件,如钩子、钩子...

    Liferay 多文件上传与下载实例

    Liferay多文件上传与下载实例,前端包含多文件上传JS,可以动态追加文件,删除文件,还有文件...本实例的版本是基于:liferay-portal-6.2.10.1-ee-ga1,可能用的版本和亲们不同,但是代码可以复制过去使用。绝对可行!

    liferay + struts2 + spring + ibatis 修改版

    【标题】"liferay + struts2 + spring + ibatis 修改版"是一个基于特定技术栈构建的Liferay门户平台的定制版本。这个项目整合了四个关键的Java Web开发框架,即Liferay、Struts2、Spring和iBatis,旨在提供更高效、...

    liferay portlet 开发实例

    在IT领域,特别是企业级应用开发中,Liferay作为一个强大的企业门户平台,提供了丰富的功能和服务,其中Liferay Portlet的开发是构建定制化企业应用的关键技术之一。本文将基于提供的文件信息,深入解析Liferay ...

    liferay-struts2-spring3-hibernate3

    liferay集成struts2 spring hibernate的完整示例,下载后将项目放入lifeRay的SDK下的portalet 目录,然后在本地数据库中创建BOOK表(bookId、bookName、BookType),修改portal.properties中JDBC连接属性,在Eclipse...

    liferay portal 6 使用文档

    在维护方面,Liferay提供了详细的文档和社区支持,帮助用户解决在使用过程中遇到的问题。 #### 五、案例研究与最佳实践 Liferay Portal 6在全球范围内有众多成功案例,涉及金融、教育、医疗等多个行业。例如,某...

Global site tag (gtag.js) - Google Analytics