java - 如果在 xml 中手动创建 bean,Spring 注入(inject)将不起作用

标签 java spring dependency-injection ioc-container

我有以下 bean :

Bean.java

import lombok.AllArgsConstructor;
import lombok.Data;

@Data
@AllArgsConstructor
public class Bean {

    private String arg;

}

Service.java

import lombok.Getter;
import javax.inject.Inject;

public class Service {

    @Inject @Getter
    private Bean bean;

    private String arg;

    public Service(String arg) {
        this.arg = arg;
    }
}

这是我实例化这些东西的方法:

test-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

   <bean class="com.example.Bean">
          <constructor-arg value="bean param"/>
   </bean>

   <bean class="com.example.Service">
          <constructor-arg value="service param"/>
   </bean>

</beans>

但是当我创建上下文并查看 Service 实例内部的内容时:

    ApplicationContext context = new ClassPathXmlApplicationContext("test-context.xml");
    System.out.println(context.getBean(Bean.class));
    System.out.println(context.getBean(Service.class).getBean());

第二个System.out给我null。

为什么Bean实例没有被注入(inject)?

最佳答案

我找到原因了,只是忘了<context:annotation-config/>为了使@Inject注释工作。

关于java - 如果在 xml 中手动创建 bean,Spring 注入(inject)将不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36667144/

相关文章:

java - 了解 Spring MVC 中的 "globalValidator"

java - 如何将工作类注入(inject)到 ServerSocket 实现中?

angular - 如何从Angular中的另一个服务调用服务的特定实例?

java - 从java中的c++/c#程序读取共享内存

java - Blueprint Maven 插件 RuntimeException

java - 如何创建路径 bean

angular - 在模型类 Angular 中注入(inject)服务

java - 如何在服务器端 Java 代码中运行 JavaScript 代码?

java - 如何获取谷歌地图发布版本的 key ?

java - SpringFox Swagger - 模型中的可选和必填字段