1

Java 6 を使用した DI に関するドキュメントをいくつか読みましたが、完全には理解できません。サービスを注入したい次のクラスがあります。

@ManagedBean
@RequestScoped
public class MyBean implements Serializable {

    private static final long serialVersionUID = 1L;

    @Inject
    private MyService myService;
    private List<SomeObject> someObjects;

    // Getter and setter

    public List<SomeObject> getSomeObjects() {
        if (someObjects == null) {
            someObjects = myService.find();
        }
        return someObjects;
    }

}

サービス:

public class MyServiceImpl implements MyService {

    public MyServiceImpl() {
    }

}

このコードを実行すると、myService は挿入されません。お願いします、私は何を間違っていますか?

PS:Tomcat 7を使用しています

4

3 に答える 3

3

Java 6には依存性注入が組み込まれておらず、Tomcat 7 AFAIKも組み込まれていません。Java EE 6 について考えていますか? 次に、TomEE や GlassFish などの Java EE 6 互換アプリサーバーでコードを実行する必要があります。

Tomcat 7 を使い続けたい場合は、代わりに Spring または Guice を検討できます。

于 2012-06-07T10:16:32.880 に答える
2

(META-INF/beans.xml または WEB-INF/beans.xml) に beans.xml ファイルを追加するだけで済みます。これはサンプルの beans.xml ファイルです。

      <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="
            http://java.sun.com/xml/ns/javaee 
            http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
      </beans>

この記事を読んで、DIの詳細な使用法を説明してください。

于 2012-06-07T10:44:35.093 に答える
-1

@Named アノテーションで MyServiceImpl にアノテーションを付けます。

于 2012-06-07T10:13:57.197 に答える