论坛首页 Java企业应用论坛

spring的bean后处理器给属性赋值后,取出来用的时候是空指针

浏览 2695 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2016-02-19  
  <bean id="loggerPostProcessor" class="com.zz.csp.common.processor.LoggerPostProcessor"/>

 

@Controller
@RequestMapping
public class IndexController extends BaseController {
    @Log public Logger logger;

    @RequestMapping("index")
    public String index() {
	//这里会报空指针异常
        logger.info("aaaaaaaaa");
        return "login";
    }
}

 

/**
 * 自定义的日志注解
 */
@Component
@Documented
@Target({ElementType.FIELD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Log {}

 

public class LoggerPostProcessor implements BeanPostProcessor{
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        ReflectionUtils.doWithFields(bean.getClass(), field -> {
            ReflectionUtils.makeAccessible(field);
            if (field.getAnnotation(Log.class) != null) {
                Logger logger = LoggerFactory.getLogger(bean.getClass());
                field.set(bean, logger);
            }
        });
        return bean;
    }

    @Override
    public Object postProcessAfterInitialization(final Object bean, String beanName) throws BeansException {
        return bean;
    }
}

 

 

   发表时间:2016-02-19  
是哪里配置错了吗?
0 请登录后投票
   发表时间:2016-02-22  
你自定义了注解而已,但是你又没有注入,你得加上@Resourse或者@autowried
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics