1、配置bean.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"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<!-- 开启注解 -->
<context:annotation-config/>
<bean id="people" class="com.cl.pojo.People">
<property name="name" value="小明"></property>
</bean>
<bean id="dog" class="com.cl.pojo.Dog" p:id="1" p:name="大黄" />
<bean id="dogNew" class="com.cl.pojo.Dog" p:id="2" p:name="小黄" />
</beans>
注意点: 需要开启注解配置 <context:annotation-config/>
2、编写实体类,在实体类中使用注解,来实现自动装配
@Data
@AllArgsConstructor
@NoArgsConstructor
public class People {
private String name;
/*
@Autowired 注解:
默认是 byType 方式,如果有多符合条件的bean, 就会自动转换成 byName 方式,
并且IoC容器中就必须要有一个 符合的bean 并且 id 跟这里的属性名相同。
@Qualifier 注解:
当容器中有多个符合条件的 bean 时,可以用 Quqlifier 来指定使用那个 bean
注解中 value 中指向指定的 bean 的 id名
*/
@Autowired
@Qualifier(value = "dogNew")
private Dog dog;
/*
@Resource 注解:
默认是 byName 方式,不指定 name 属性,IoC容器中就必须要有一个符合的bean
并且 id 跟这里的属性名相同。
*/
@Resource(name = "car")
private Car car;
}
小结 autowired 与 resource 的区别:
-
@Autowired 默认使用 ByType 方式,如果有多符合条件的bean, 就会自动转换成 byName 方式 ,并且IoC容器中就必须要有一个 符合的bean 并且 id 跟这里的属性名相同。
-
@Resource 使用 ByName 方式 ,不指定 name 属性,IoC 容器中就必须要有一个符合的bean 并且 id 跟这里的属性名相同。