`
jimmy9495
  • 浏览: 297208 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

父类bean无法注入问题

阅读更多
package com.alifi.hades.biz.access.rule.ctu;

import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.alifi.hades.biz.access.rule.AccessRule;
import com.alifi.hades.biz.crm.manager.CrmMemberManager;
import com.alifi.hades.common.model.CustListDO;
import com.alifi.hades.dal.dao.CustListDao;
import com.alifi.hyperion.common.model.Member;

/**
 * 黑名单准入规则
 *
 */
public abstract class AbstractCTUAccessRule implements AccessRule {
    private static final Log logger = LogFactory.getLog(AbstractCTUAccessRule.class);
    protected static final String KEY_MEMBER = "member";
    
    private CrmMemberManager crmMemberManager;
    private CustListDao       custListDao;


    public boolean checkAccess(String prodId, Map<String, Object> context) {
        if (context.containsKey(KEY_MEMBER)) {
            Member member = (Member) context.get(KEY_MEMBER);
            String site = crmMemberManager.getSiteBySource(member.getSource());
            String siteMemId = member.getUserId();
            String ruleCode = getAccessRuleCode();
            // 白名单
            CustListDO whiteList = custListDao.getWhiteListByRuleCode(site, siteMemId, ruleCode);
            if (whiteList != null) {
                logger.info("该规则的白名单用户,跳过此规则校验。ruleCode:" + ruleCode + "    siteMemId:" + siteMemId);
                return true;
            }
            return doCheckAccess(prodId, member);
        }
        return false;
    }


    protected abstract boolean doCheckAccess(String prodId, Member member);


    public void setCustListDao(CustListDao custListDao) {
        this.custListDao = custListDao;
    }


    public void setCrmMemberManager(CrmMemberManager crmMemberManager) {
        this.crmMemberManager = crmMemberManager;
    }

}





/*
 * Project: Hades
 * 
 * File Created at 2011-03-15
 * $Id$
 * 
 * Copyright 2011 B2B Technology, Alibaba.com Corporation Limited.
 * All rights reserved.
 *
 * This software is the confidential and proprietary information of
 * Alibaba Company. ("Confidential Information").  You shall not
 * disclose such Confidential Information and shall use it only in
 * accordance with the terms of the license agreement you entered into
 * with Alibaba.com.
 */

package com.alifi.hades.biz.access.rule.ctu;

import static com.alifi.hades.biz.common.util.TemplatedLog.log;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.alifi.ctu.service.BlackListService;
import com.alifi.hades.biz.common.dictionary.MsgTemplateDictionary.DataError;
import com.alifi.hades.biz.common.dictionary.MsgTemplateDictionary.RpcCallError;
import com.alifi.hades.biz.common.exception.LoanLogMsg;
import com.alifi.hades.biz.crm.manager.CrmMemberManager;
import com.alifi.hyperion.common.model.Member;

/**
 * 黑名单不准入
 *
 */
public class BlackListAccessRule extends AbstractCTUAccessRule {

    private static final Log logger = LogFactory.getLog(BlackListAccessRule.class);
    
    private CrmMemberManager crmMemberManager;
    
    private BlackListService blackListService;
    
    @Override
    /**
     * 黑名单不准入
     */
    protected boolean doCheckAccess(String prodId, Member member) {
        String site = crmMemberManager.getSiteBySource(member.getSource());
        String siteMemId = member.getUserId();
        try {
            if(blackListService.checkBlackListBySiteMemeber(site, siteMemId, prodId, "1")){
                logger.debug(log(DataError.UNEXPECTED, "黑名单用户不准入。siteMemId:" + siteMemId));
                return false;
            }else{
                return true;
            }
        } catch (Exception e) {
            logger.error(log(RpcCallError.MSG_00001, LoanLogMsg.BLACKLIST_EXCEPTION), e);
            return false;
        }
    }
    
    public String getAccessRuleCode() {
        return "2000";
    }

    
    public void setCrmMemberManager(CrmMemberManager crmMemberManager) {
        this.crmMemberManager = crmMemberManager;
        super.setCrmMemberManager(crmMemberManager);//处理父类无法注入问题
    }

    public void setBlackListService(BlackListService blackListService) {
        this.blackListService = blackListService;
    }
}

分享到:
评论

相关推荐

    如何正确使用 @Qualifier 注解来解决多个同类型 Bean 注入的问题

    Spring 容器中存在多个同一接口或父类的实现时,如果不明确指定要注入哪个实现,Spring 就会抛出 "Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @...

    Spring.html

    基于父类:代理对象与目标对象是父子关系.目标不能被final修饰 修改默认代理方法: 增强种类 前置通知 后置通知 异常通知 最终通知 环绕通知 注意:使用注解的方式,最终通知和后置通知顺序换了,建议...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    第二部分详细讲解了jsf ri、jta、jndi、rmi、jms、javamail、ejb 3的session bean、message driven bean、jpa、jax-ws 2、jaas等java ee知识,这部分知识以jsf+ejb 3+jpa整合开发为重点,通过使用netbeans ide工具...

    ssh(structs,spring,hibernate)框架中的上传下载

     在配置完LobHandler后, 还需要将其注入到sessionFactory的Bean中,下面是调用后的sessionFactory Bean的配置:  代码 6 将lobHandler注入到sessionFactory中的配置 1. 2. … 3. <bean id="sessionFactory" 4. ...

    Hibernate注释大全收藏

    Hibernate注释大全收藏 声明实体Bean @Entity ...如果没有@MappedSuperclass 注解,则父类中属性忽略,这是 Order 实体 Bean 只有 id 一个属性。 映射实体Bean的关联关系 一对一 使用 @OneToOne...

    客户关系管理系统框架搭建(二)

    //调用父类的setSessionFactory方法,注入sessionFactory super.setSessionFactory(sessionFactory); } } * 创建部门的dao接口 SysUserGroupDao接口 放在cn.itcast.crm.dao包下 ...

    java面试题

    答:EJB不是一般的JavaBean,EJB是企业级的JavaBean,EJB一共分为3种,实体Bean,消息Bean,会话Bean。书写EJB要遵循一定的规范,另外要运行EJB,你需要有相应的EJB容器,比如WebLogic、jboss等,而JavaBean不需要...

    Java 面试题 word文档

    11. session bean 和 entity bean 的区别 12. ejb 中的 transaction 机制 13. synchronized (生产者和消费) 14. String 和 StringBuffer 15. Serializable 16. MVC (Struts 的工作流程) 17. 什么是 MDA 18. tcp ...

    千方百计笔试题大全

    202、用jdom解析xml文件时如何解决中文问题?如何解析? 48 203、编程用JAVA解析XML的方式. 49 204、EJB2.0有哪些内容?分别用在什么场合? EJB2.0和EJB1.1的区别? 51 205、EJB与JAVA BEAN的区别? 51 206、EJB的基本...

    java面试宝典

    202、用jdom解析xml文件时如何解决中文问题?如何解析? 48 203、编程用JAVA解析XML的方式. 49 204、EJB2.0有哪些内容?分别用在什么场合? EJB2.0和EJB1.1的区别? 51 205、EJB与JAVA BEAN的区别? 51 206、EJB的基本...

    最新Java面试宝典pdf版

    给一个 Bean 的 message 属性, 字符串类型, 注入值为 "Hello" 的 XML 配置文件该怎么写? 125 19、Jdo是什么? 125 20、什么是spring的IOC AOP 126 21、STRUTS的工作流程! 126 22、spring 与EJB的区别!! 126 八. ...

    Java面试宝典2010版

    给一个 Bean 的 message 属性, 字符串类型, 注入值为 "Hello" 的 XML 配置文件该怎么写? 19、Jdo是什么? 20、什么是spring的IOC AOP 21、STRUTS的工作流程! 22、spring 与EJB的区别!! 八. 软件工程与设计...

    Java面试笔试资料大全

    给一个 Bean 的 message 属性, 字符串类型, 注入值为 "Hello" 的 XML 配置文件该怎么写? 125 19、Jdo是什么? 125 20、什么是spring的IOC AOP 126 21、STRUTS的工作流程! 126 22、spring 与EJB的区别!! 126 八. ...

    JAVA面试宝典2010

    给一个 Bean 的 message 属性, 字符串类型, 注入值为 "Hello" 的 XML 配置文件该怎么写? 125 19、Jdo是什么? 125 20、什么是spring的IOC AOP 126 21、STRUTS的工作流程! 126 22、spring 与EJB的区别!! 126 八. ...

    Java面试宝典-经典

    给一个 Bean 的 message 属性, 字符串类型, 注入值为 "Hello" 的 XML 配置文件该怎么写? 125 19、Jdo是什么? 125 20、什么是spring的IOC AOP 126 21、STRUTS的工作流程! 126 22、spring 与EJB的区别!! 126 八. ...

    java面试题大全(2012版)

    给一个 Bean 的 message 属性, 字符串类型, 注入值为 "Hello" 的 XML 配置文件该怎么写? 125 19、Jdo是什么? 125 20、什么是spring的IOC AOP 126 21、STRUTS的工作流程! 126 22、spring 与EJB的区别!! 126 八. ...

    Java面试宝典2012版

    给一个 Bean 的 message 属性, 字符串类型, 注入值为 "Hello" 的 XML 配置文件该怎么写? 125 19、Jdo是什么? 125 20、什么是spring的IOC AOP 126 21、STRUTS的工作流程! 126 22、spring 与EJB的区别!! 126 ...

    java面试宝典2012

    给一个 Bean 的 message 属性, 字符串类型, 注入值为 "Hello" 的 XML 配置文件该怎么写? 137 19、Jdo是什么? 137 20、什么是spring的IOC AOP 137 21、STRUTS的工作流程! 137 22、spring 与EJB的区别!! 137 八. ...

    Java面试宝典2012新版

    给一个 Bean 的 message 属性, 字符串类型, 注入值为 "Hello" 的 XML 配置文件该怎么写? 125 19、Jdo是什么? 125 20、什么是spring的IOC AOP 126 21、STRUTS的工作流程! 126 22、spring 与EJB的区别!! 126 八. ...

Global site tag (gtag.js) - Google Analytics