11

私は春3.0のWebアプリケーションを持っています。私はappcontext xmlで定義されたbeanを使用するcronのmainメソッドを使ってクラスを実行する必要があります(コンポーネントのスキャンアノテーションを使用します)。私は同じsrcディレクトリに私のメインクラスを持っています。 WebコンテキストからメインメソッドにBeanを挿入するにはどうすればいいですか?私はAutoWiredを使用しようと、それがnull Beanを返しメインメソッドクラスのSpring beanインジェクション

ApplicationContext context = new ClassPathXmlApplicationContext("appservlet.xml"); 

を使用して、それを実行しようとしました。だから、私はApplication ctxを使っていました。これは、mainメソッドを実行すると(期待どおりの)新しいコンテキストを作成しています。しかし、コンテナから既存のBeanを使用することは可能でしょうか。

@Autowired 
static DAO dao; 

    public static void main(String[] args) { 
       ApplicationContext context = new ClassPathXmlApplicationContext("xman-   servlet.xml"); 
    TableClient client = context.getBean(TableClient.class); 
    client.start(context); 

} 
+1

将来の読者のために、密接に関連する質問:http://stackoverflow.com/questions/3659720/spring-3-autowire-in-standalone-application – Jonik

答えて

1

メインアプリケーションにスプリングコンテキストを使用し、webappと同じBeanを再利用することができます。 Webアプリケーションのコンテキスト(リクエストスコープ、Webコントローラなど)でのみ意味のあるBeanを定義していない場合、Spring XML設定ファイルの一部を再利用することもできます。

しかし、2つのJVMを実行するため、異なるインスタンスが発生します。本当に同じBeanインスタンスを再利用したい場合は、WebサービスまたはHttpInvokerを使用して、Webアプリケーション内のBeanのメソッドをリモートから呼び出す必要があります。

4

Springで作成されていないオブジェクトにSpring Beanを挿入することはできません。それを言うもう一つの方法は、Springが管理するオブジェクトにのみSpringを注入することです。

コンテキストを作成するので、DAOオブジェクトに対してgetBeanを呼び出す必要があります。

Spring Batchをご覧ください。あなたにとって役に立つかもしれません。

2

このメインで試してみてください:

public class Main { 

    public static void main(String[] args) { 
     Main p = new Main(); 
     p.start(args); 
    } 

    @Autowired 
    private MyBean myBean; 
    private void start(String[] args) { 
     ApplicationContext context = 
      new ClassPathXmlApplicationContext("classpath*:/META-INF/spring/applicationContext*.xml"); 
     System.out.println("The method of my Bean: " + myBean.getStr()); 
    } 
} 

そして、この豆:

@Service 
public class MyBean { 
    public String getStr() { 
     return "mybean!"; 
    } 
} 
1

春ブーツは、このための公式のソリューションを提供します。

https://start.spring.io/

から骨格をダウンロードしてのpom.xmlで確認してください梱包をジャーに設定されていることを確認。 Web依存関係を含まない限り、アプリケーションはコンソールアプリケーションのままです。

関連する問題