Java @Autowired注解自动注入bean
annotationWire.xml (一定记得配置context:annotation-config/)
<?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" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<context:annotation-config/>
<bean id="order" class="com.annotationWire.pojo.Order" p:order="202020124546" />
<bean id="user" class="com.annotationWire.pojo.User" />
</beans>
User类
package com.annotationWire.pojo;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
@Data
public class User {
private String name;
@Autowired
private Order order;
}
Order类
package com.annotationWire.pojo;
import lombok.Data;
@Data
public class Order {
private String order;
}
测试类
package com.annotationWire;
import com.annotationWire.pojo.User;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestAnnotation {
@Test
public void test(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("annotationWire.xml");
User student = applicationContext.getBean(User.class);
System.out.println(student);
}
}
java配置spring,无法@Autowired自动注入bean的问题
要在配置类上加上@ComponentScan
同时在RootConfigure和ServletConfig两个类上scan的对象是不同的
ServletConfig是用来注册DispatcherServlet的,它只是用来扫描controller层的
RootConfigure用来注册ContextLoaderListener,他扫描的范围是除了controller以外的bean,例如dao,service,bean实体。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。