首页 > 代码库 > 使用注解实现IOC的配置
使用注解实现IOC的配置
一、使用注解实现IoC的配置
/**
* 员工实现类,实现Dao接口,负责User类的持久化操作
**/
//通过注解定义一个DAO
@Component("employeeDao")
public class EmployeeDaoImpl implements EmployeeDao{
public void save(Employee employee){
//这里并未实现完整的数据库操作,仅为说明问题
System.out.printLn("保存用户信息到数据库");
}
}
以上代码通过注解定义了一个名为employeeDao的Bean 与<bean id="employeeDao" class="com.dao.impl.EmployeeDaompl"/>
等效。除了@Component,Spring还提供了3个特殊的注解
@Repository:用于标注DAO类
@Service:用于标注业务类
@Controller:用于标注控制器类
二、使用注解实现自动装配
1、Spring提供了@Autowired注解实现Bean的自动装配
/**
*员工业务类,实现对Employee功能的业务管理
**/
@Service("employeeBiz");
public class EmployeeBizImpl implements EmployeeBiz{
//声明接口类的引用和具体实现类解耦和
@AutoWired
private EmployeeDao employeeDao;
//构造函数 得到SessionFactory
@Autowired
public ClaimVoucherDaoImpl(@Qualifier("sessionFactory") SessionFactory sessionFactory){
this.setSessionFactory(sessionFactory);
}
public ClaimVoucherDaoImpl(){
}
}
以上代码通过@Service标注一个业务Bean,并使用@Autowired为dao属性设置自动装配,且@AutoWired默认采用
按类型的方式
2、若要采用按名称匹配的方式,则可以使用@Qualifier指定
/**
*员工业务类,实现对Employee功能的业务管理
**/
@Service("employeeBiz");
public class EmployeeBizImpl implements EmployeeBiz{
//声明接口类的引用和具体实现类解耦和
@AutoWired
@Qualifier("employeeDao");
private EmployeeDao employeeDao;
//构造函数 得到SessionFactory
@Autowired
public ClaimVoucherDaoImpl(@Qualifier("sessionFactory") SessionFactory sessionFactory){
this.setSessionFactory(sessionFactory);
}
public ClaimVoucherDaoImpl(){
}
}
3、@Autowired也可以对方法进行标注
/**
*员工业务类,实现对Employee功能的业务管理
**/
@Service("employeeBiz");
public class EmployeeBizImpl implements EmployeeBiz{
//声明接口类的引用和具体实现类解耦和
private EmployeeDao employeeDao;
//dao属性的setter访问器
@AutoWired
public void setEmployeeDao(EmployeeDao employeeDao){
this.employeeDao = employeeDao;
}
//构造函数 得到SessionFactory
@Autowired
public ClaimVoucherDaoImpl(@Qualifier("sessionFactory") SessionFactory sessionFactory){
this.setSessionFactory(sessionFactory);
}
public ClaimVoucherDaoImpl(){
}
}
三、使用注解实现控制
@Controller("employeeAction")
public class EmployeeAction extends ActionSupport {
//封装雇员登陆的信息
private SysEmployee sysemployee;
//雇员业务属性
@Autowired
@Qualifier("employeeBiz")
private EmployeeBiz employeeBiz;
//封装getter和setter 进行设值注入
public EmployeeBiz getEmployeeBiz() {
return employeeBiz;
}
public SysEmployee getSysemployee() {
return sysemployee;
}
public void setSysemployee(SysEmployee sysemployee) {
this.sysemployee = sysemployee;
}
public void setEmployeeBiz(EmployeeBiz employeeBiz) {
this.employeeBiz = employeeBiz;
}
}
四、使用注解指定Bean的作用域
/**
*员工业务类,实现对Employee功能的业务管理
**/
@Scope("prototype");
@Service("employeeBiz");
public class EmployeeBizImpl implements EmployeeBiz{
//声明接口类的引用和具体实现类解耦和
@AutoWired
@Qualifier("employeeDao");
private EmployeeDao employeeDao;
}
五、加载注解定义的Bean
<!--扫描包中注解标注的类-->
<context:component-scan base-package="com.bdqn" />
使用注解实现IOC的配置