@Autowired 注解是通过 java config 进行 bean 的自动装配
在使用 @Autowired 的时候,需要在xml配置文件中添加这段代码
<!-- 该 BeanPostProcessor 将自动对标注@Autowired 的 Bean 进行注入 --><bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />
案例代码:
Person.java
package com.baklib.custom;public class Person {private String name;private int age;public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}
Car.java
package com.baklib.custom;public class Car {private float price;private String name;public Car() {}public Car(float price, String name) {this.price = price;this.name = name;}public float getPrice() {return price;}public void setPrice(float price) {this.price = price;}public String getName() {return name;}public void setName(String name) {this.name = name;}}
Action.java
package com.baklib.custom;import org.springframework.beans.factory.annotation.Autowired;public class Action {// 成员变量的自动装配@Autowiredprivate Person person;@Autowiredprivate Car car;public Action() {}// 构造方法的自动装配@Autowiredpublic Action(Person person, Car car) {this.person = person;this.car = car;}public void buyCar() {System.out.println(person.getName() + "今年" + person.getAge() + "岁,花了"+ car.getPrice() + "元买了" + car.getName());}}
MainApp.java
package com.baklib.custom;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class MainApp {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");Action action = (Action) context.getBean("action");action.buyCar();}}
配置文件 Beans.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 id="person" class="com.baklib.custom.Person" ><property name="name" value="张三" /><property name="age" value="24" /></bean><bean id="car" class="com.baklib.custom.Car"><property name="name" value="小轿车" /><property name="price" value="100000.0" /></bean><bean id="action" class="com.baklib.custom.Action" /><!-- 该 BeanPostProcessor 将自动对标注@Autowired 的 Bean 进行注入 --><bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" /></beans>
编写完以上代码,就可以运行这个程序,运行结束后,可以在控制台看到下面的信息
张三今年24岁,花了100000.0元买了小轿车
