2017-06-27 5 views
3

Springがコンテキストの初期化時にエラーをスローするようなクラスをマークできるウェイ(基本クラスのアノテーション)はありますか?基本的には、私は設計上のスレッドセーフではないクラスを持っていますし、誰もがシングルトンBeanとして春にそれを使用することを望んでいません。私はそれがプロトタイプのBeanとして使用できることを知っていますが、私は禁止することができます、それはまったく春の豆として使用されていますか?春の豆としてクラスを使用することを禁止する方法はありますか?

+0

私が気づいている組み込み方法はありませんが、何かを一緒にハックすることができるかもしれません。しかし、クラスSpringを依存関係として結び付けているだけで、Springを管理することはできません。 –

+0

@ChristopherSchneider '@ PostConstruct'はSpringに依存する必要はありません – OrangeDog

+0

True ...質問はSpringについて特に質問しましたが。 '@PostConstruct'は依存性注入をまったく許可しません。 –

答えて

6

初期化後のメソッドをスローします。

どちらかあなたは周りの全部または一部のメソッドの前側面を定義することができ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

カスタムを使用できInitializingBean

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

を実装したり、JEE annotation

@PostConstruct 
public final void forbidDependencyInjection() { 
    throw new UnsupportedOperationException(); 
} 
関連する問題