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