Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有办法禁止将类用作Springbean?_Java_Spring_Spring Mvc - Fatal编程技术网

Java 有没有办法禁止将类用作Springbean?

Java 有没有办法禁止将类用作Springbean?,java,spring,spring-mvc,Java,Spring,Spring Mvc,有没有一种方法(基类的任何注释)可以用来标记一个类,从而使spring在上下文初始化时抛出错误?基本上,我有一个类,它在设计上不是线程安全的,我不希望任何人将它与spring一起用作单例bean。我知道它可以作为原型bean使用,但是我可以禁止它作为Springbean一起使用吗?让它的后初始化方法抛出 要么实施 或者使用 您可以使用您的自定义设置 public Object postProcessBeforeInitialization(最终对象bean,最终字符串beanName)抛出Bea

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

让它的后初始化方法抛出

要么实施

或者使用

您可以使用您的自定义设置

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;
}