@ autowire injection as null

simplified the business to the following code, and found that I was a little confused for null, when I was @ Autowired

Spring-config.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"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">


    <context:component-scan base-package="com"/>
</beans>

HelloWord.java

@Controller
public class HelloWorld {

    private String name;


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

Test class

public class Demo {

    @Autowired
    HelloWorld bean;

    ApplicationContext context;


    @Before
    public void init() {
        context = new ClassPathXmlApplicationContext("classpath:spring-config.xml");
    }

    @Test
    public void testDemo() {
        Object boo = context.getBean("helloWorld"); //bean
        System.out.println(boo);
        System.out.println(bean.getName());  //beannull,?
    }
}
Dec.14,2021

does the test class have tags that need to be managed?

Spring you need to know which classes need to be managed by it before scanning the injection comments on the class for processing.

but I haven't tried to put the test class into the scan package, so I'm not sure if I can scan it out.


Add the following comments to the

class

@RunWith(SpringRunner.class)
@SpringBootTest //springboot
Menu