需求描述:service层bean要注入dao层bean,并且不是基于xml文件的
一、java类
service:
package com.wenpu.inject.annotation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
//设置bean的名字
@Component("serviceBean")
public class ServiceBean {
@Autowired//默认根据bean的类型注入
@Qualifier("daoBean")//添加了此注解,将根据bean的名字注入
private DaoBean daoBean;
public DaoBean getDaoBean() {
return daoBean;
}
public void setDaoBean(DaoBean daoBean) {
this.daoBean = daoBean;
}
public void add(){
daoBean.save();
}
}
dao:
package com.wenpu.inject.annotation;
import org.springframework.stereotype.Component;
//设置bean的名字
@Component("daoBean")
public class DaoBean {
public void save(){
System.out.println("dao save");
}
}
二、配置文件
<?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-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd">
<!-- 扫描包,让注解方式配置的类进入spring的容器管理 -->
<context:component-scan base-package="com.wenpu.inject"></context:component-scan>
</beans>
三、测试类
package com.wenpu.inject.annotation;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
ApplicationContext context=new ClassPathXmlApplicationContext("com/wenpu/inject/annotation/annotation-context.xml");
ServiceBean serviceBean=(ServiceBean)context.getBean("serviceBean");
serviceBean.add();
}
}
四、输出结果:
dao save
五、使用注解的好处是让bean的定义和实现统一,而非xml格式二者是分离的。
六、上面的service bean注入dao bean时,Autowired是放在了属性上,同样也可放在set方法上。