Java 使用Spring的自动依赖注入

Java 使用Spring的自动依赖注入,java,spring,dependencies,code-injection,Java,Spring,Dependencies,Code Injection,我目前正在使用带有Tomcat6的CDI(Weld)作为servlet容器。在配置中有WeldLifecycleListener,执行依赖注入相当简单 我的问题是:是否有一个等效于Spring的WeldLifecycleListener来避免从ApplicationContext实例化bean?我不确定WeldLifecycleListener,但可以为自动依赖注入提供指针 您可以在Spring配置文件的springbean中使用autowire属性。读一下这个 您还可以使用注释按类型自动连接,

我目前正在使用带有Tomcat6的CDI(Weld)作为servlet容器。在配置中有WeldLifecycleListener,执行依赖注入相当简单


我的问题是:是否有一个等效于Spring的WeldLifecycleListener来避免从ApplicationContext实例化bean?

我不确定
WeldLifecycleListener
,但可以为自动依赖注入提供指针

  • 您可以在Spring配置文件的springbean中使用autowire属性。读一下这个
  • 您还可以使用注释按类型自动连接,@Qualifier以及注释按名称查找bean
  • 注释可用于按名称自动布线

  • 如果您不想在Spring配置中定义任何bean,请使用组件扫描自动检测组件,并在bean上使用注释@component-此+@Autowire/@资源将简化您的配置

  • 在Spring3中,您可以使用注释,例如
    @Named
    @Inject
    (请参阅)

    当您通过向spring配置文件添加以下内容来启用组件扫描时,将自动检测并实例化用
    @Named
    注释的类:

    <context:component-scan base-package="${base-package}" />
    
    
    

    其中
    ${base package}
    是包含所有组件(直接或在子包中)的包。

    您所说的“避免应用程序上下文”是什么意思?感谢您迄今为止的回答,但我的问题不是如何定义bean(java、xml、注释)。到目前为止还没有问题。使用Spring,我只在从applicationContext获得的bean中解决了依赖关系。例如,以下工作:ctx=webapplicationcontextils.getRequiredWebApplicationContext(getServletContext());testBean=(testBean)ctx.getBean(“testBean”);testBean中的依赖关系被正确解析。但是,如果不调用allicationContext,我就不能直接@InjectTestBean?我不是CDI专家,但我猜您必须选择通过CDI或Spring来管理它们,否则您将不得不添加自定义代码来获取Spring上下文并注入依赖项。不过,如果您将
    @Component
    @Controller
    添加到您试图注入依赖项的类中,则可能需要添加自定义代码(即,您正在编写的类
    ctx=WebApplicationContext…
    )。