1 xml和注解的适用场景
xml : 可以适用于任何场景
结构清晰,维护方便
注解:有些地方用不了,这个类不是自己提供的
开发方便
2 xml和注解的整合开发
xml管理bean,注解完成属性注入
纯xml例子
分别三个类
package com.heshihua.spring.demo3;
public class OrderDao {
public void save() {
System.out.println("OrderDao的Sava方法执行了。。。。。。。。。。。");
}
}
package com.heshihua.spring.demo3;
public class ProductDao {
public void save() {
System.out.println("ProductDao的Sava方法执行了。。。。。。。。。。。");
}
}
package com.heshihua.spring.demo3;
public class ProductService {
private ProductDao productDao;
private OrderDao orderDao;
public void setProductDao(ProductDao productDao) {
this.productDao = productDao;
productDao.save();
}
public void setOrderDao(OrderDao orderDao) {
this.orderDao = orderDao;
orderDao.save();
}
public void save() {
System.out.println("ProductService的Sava方法执行了");
}
}
上面的第三个类注入前俩个类
通过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">
<!-- bean definitions here -->
<bean id= "productDao" class="com.heshihua.spring.demo3.ProductDao"></bean>
<bean id= "orderDao" class="com.heshihua.spring.demo3.OrderDao"></bean>
<bean id= "productService" class="com.heshihua.spring.demo3.ProductService">
<property name="productDao" ref="productDao"></property>
<property name="orderDao" ref="orderDao"></property>
</bean>
</beans>
编写测试类
@Test
public void demo1() {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
ProductService productService = (ProductService)applicationContext.getBean("productService");
productService.save();
}
查看结果
xml和注解配合
要修改的地方就是把set方法去掉,用注解的方法注入属性@Resource(name = "xxxxx")
xml的修改
把在xml中的注解去掉,使用<Context:annotation-config/>因为是直接使用的xml中的bean所以不需要扫描