1

私は次のクラスを持っています:

@Component("persistenceJPAConfig")
public class JPAPersistenceConfig {...}

Spring を使用すると、JPAPersistenceConfig - クラスを使用するターゲット クラスに @Autowired-annotation を使用してメソッドを追加することで、クラスを「注入」できます。私は問題なく動作します。クラス自体は問題ありません。

問題は、Bean も使用する必要がある実行時にクラスを作成する (ソース コードを記述してコンパイルする) 必要があることです。

autowired-methods も追加しましたが、null のままです。

@org.springframework.stereotype.Component("Customers")
public class Customers  {
    public Customers() {
    }
    private org.product.server.database.JPAPersistenceConfig persistenceJPAConfig; 

    @org.springframework.beans.factory.annotation.Autowired 
    public void setPersistenceJPAConfig(org.product.server.database.JPAPersistenceConfig persistenceJPAConfig) {
        this.persistenceJPAConfig = persistenceJPAConfig;
    }  
    public void someMethod() {
        this.persistenceJPAConfig.getClassByName(...)
        // Throws nullpointer
    }
}

生成されたファイルも @Component でマークして、Spring で「マネージド Bean」になるようにする必要がありますか? そして、実行時にSpringにどのように登録されますか?

必死にあなたのもの:-)

4

2 に答える 2

0

@vacuumが言ったことに加えて、生成されたクラスに注釈を付け、@Component実行時にスキャンして、を使用して依存関係を持つBeanを生成できClassPathScanningCandidateComponentProviderます

于 2012-09-28T15:37:21.893 に答える
0

実行時に Bean を登録できます。

DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory) applicationContext.getBeanFactory();
beanFactory.registerBeanDefinition("myClass", BeanDefinitionBuilder.rootBeanDefinition(MyClass.class.getName()).getBeanDefinition());

また、クラスに自動配線されたプロパティがある場合、それらも注入されます。

于 2012-09-28T15:32:28.283 に答える