DI与Jav​​a 6?

时间:2012-06-07 09:20:18

标签: java dependency-injection java-ee-6 java-6

我用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

3 个答案:

答案 0 :(得分:3)

Java 6没有内置依赖注入,Tomcat 7也没有AFAIK。你在考虑Java EE 6吗?然后,您必须在兼容Java EE 6的应用程序服务器中运行代码,例如TomEE或GlassFish。

如果你想留在Tomcat 7,你可以改为使用Spring或Guice。

答案 1 :(得分: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>

阅读此article,详细说明DI的详细用法。

答案 2 :(得分:-1)

使用@Named注释注释MyServiceImpl。