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

4 篇文章 0 订阅
2 篇文章 0 订阅
自己新建的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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值