Java 有没有办法禁止将类用作Springbean?
有没有一种方法(基类的任何注释)可以用来标记一个类,从而使spring在上下文初始化时抛出错误?基本上,我有一个类,它在设计上不是线程安全的,我不希望任何人将它与spring一起用作单例bean。我知道它可以作为原型bean使用,但是我可以禁止它作为Springbean一起使用吗?让它的后初始化方法抛出 要么实施 或者使用 您可以使用您的自定义设置Java 有没有办法禁止将类用作Springbean?,java,spring,spring-mvc,Java,Spring,Spring Mvc,有没有一种方法(基类的任何注释)可以用来标记一个类,从而使spring在上下文初始化时抛出错误?基本上,我有一个类,它在设计上不是线程安全的,我不希望任何人将它与spring一起用作单例bean。我知道它可以作为原型bean使用,但是我可以禁止它作为Springbean一起使用吗?让它的后初始化方法抛出 要么实施 或者使用 您可以使用您的自定义设置 public Object postProcessBeforeInitialization(最终对象bean,最终字符串beanName)抛出Bea
public Object postProcessBeforeInitialization(最终对象bean,最终字符串beanName)抛出BeansException{
Class targetClass=AopUtils.getTargetClass(bean);
if(targetClass==MyProbited.class)){
....
返回null;
}
返回豆;
}
您可以在该类的所有或某些方法周围或之前定义一个方面,该方法在被调用时引发异常。这不需要修改类。我知道没有内置的方法,但您可以将一些东西组合起来。但是,您将类Spring绑定为依赖项,这样它就不能被Spring管理。@ChristopherSchneider@PostConstruct
不需要依赖于SpringTrue。。。虽然这个问题是专门问关于春天的@PostConstruct
将完全不允许依赖项注入,这可能是所需要的。
public final void afterPropertiesSet() {
throw new UnsupportedOperationException();
}
@PostConstruct
public final void forbidDependencyInjection() {
throw new UnsupportedOperationException();
}
public Object postProcessBeforeInitialization(final Object bean, final String beanName) throws BeansException {
Class<?> targetClass = AopUtils.getTargetClass(bean);
if (targetClass == MyProhibited.class)) {
....
return null;
}
return bean;
}