有没有办法禁止使用类作为春豆?

时间:2017-06-27 13:05:46

标签: java spring spring-mvc

是否有一种方法(基类的任何注释)使用它来标记一个类,以便spring在上下文初始化时抛出错误?基本上我有一个类不是线程安全的设计,我不希望任何人使用它作为单独的bean春天。我知道它可以用作原型bean,但是我可以禁止它,它一起被用作弹簧豆吗?

3 个答案:

答案 0 :(得分:6)

使其初始化后方法抛出。

实施InitializingBean

public final void afterPropertiesSet() {
    throw new UnsupportedOperationException();
}

或使用JEE annotation

@PostConstruct
public final void forbidDependencyInjection() {
    throw new UnsupportedOperationException();
}

答案 1 :(得分:2)

您可以使用自定义BeanPostProcessor

public Object postProcessBeforeInitialization(final Object bean, final String beanName) throws BeansException { 
   Class<?> targetClass = AopUtils.getTargetClass(bean);
   if (targetClass == MyProhibited.class)) {
       ....
       return null;
    }

   return bean;
}

答案 2 :(得分:1)

您可以在该类的所有或某些方法周围或之前定义一个方面,以便在被调用时抛出异常。这不需要修改课程。