Spring框架之依赖注入DI(3.0)

Spring框架之依赖注入DI(3.0)

基于Annotation的依赖注入配置**(核心)**

模拟数据层与业务层的控制:
在这里插入图片描述
Dept.java

import java.io.Serializable;

@SuppressWarnings("serial")
public class Dept implements Serializable {
	private Integer deptno ;
	private String dname ;
	private String loc ;
	public void setDeptno(Integer deptno) {
		this.deptno = deptno;
	}
	public void setDname(String dname) {
		this.dname = dname;
	}
	public void setLoc(String loc) {
		this.loc = loc;
	}
	@Override
	public String toString() {
		return "Dept [deptno=" + deptno + ", dname=" + dname + ", loc=" + loc + "]";
	}
}

1,定义一个IDeptDAO接口:

import cn.mldn.vo.Dept;
public interface IDeptDAO {
	public boolean doCreate(Dept vo);
}

2,定义一个IDeptDao的实现子类,采用Annotaion自动解析的方式进行配置。
a,修改配置文件,在Namespaces中将context打上勾。
在这里插入图片描述

xmlns:context="http://www.springframework.org/schema/context"
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-4.1.xsd">

b,启用Annotation,配置Annotaion的扫描包路径。

<!-- 表示在当前的配置中将采用Annotation注解的方式进行定义 -->
<context:annotation-config/>
<!-- 定义扫描包,在此包中定义的所有的程序类支持Annotation配置 -->
<context:component-scan base-package="cn.mldn"/>

关于三种Annotion的区别:
在这里插入图片描述
c,定义DeptDAO子类:

import org.springframework.stereotype.Component;
import cn.mldn.dao.IDeptDAO;
import cn.mldn.vo.Dept;
// 此时就相当于在applicationContext.xml文件中定义<bean>一样的,id是deptDAOImpl
@Component
public class DeptDAOImpl implements IDeptDAO {
	@Override
	public boolean doCreate(Dept vo) {
		System.out.println("【DeptDAOImpl子类】,数据增加 : " + vo);
		return true ;
	}
}

3,定义业务层的操作接口:

import cn.mldn.vo.Dept;
public interface IDeptService {
	public boolean add(Dept vo) ;
}

4,定义业务层实现子类,此子类依然需要进行注解配置。
·在业务层一定要引入数据层的子类对象,这个时候的对象引入有两种方式完成:
a,

	private IDeptDAO deptDAO;//对象名字由用户自己来定义
	//此时表示要在整个Spring之中自动找到名称为deptDAOImpl的子类对象实例进行引用传递
	@Resource(name="deptDAOImpl")
	public void setDeptDAO(IDeptDAO deptDAO) {
		this.deptDAO = deptDAO;
	}

b,

	@Resource	// 自动根据类型引用
	private IDeptDAO deptDAO ;	// 对象名字由用户自己来定义

定义DeptServiceImpl实现子类的定义:

import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import cn.mldn.dao.IDeptDAO;
import cn.mldn.vo.Dept; 
@Service
public class DeptServiceImpl implements IDeptService {
	@Resource	// 自动根据类型引用
	private IDeptDAO deptDAO ;	// 对象名字由用户自己来定义
	@Override
	public boolean add(Dept vo) {
		return this.deptDAO.doCreate(vo);
	}
}

5,定义测试类

public class TestDemoA {
	public static void main(String[] args) {
		ApplicationContext ctx = new ClassPathXmlApplicationContext(
				"applicationContext.xml");
		IDeptService service = ctx.getBean("deptServiceImpl",IDeptService.class);
		Dept vo = new Dept() ;
		vo.setDeptno(10);
		vo.setDname("开发部");
		vo.setLoc("北京");
		System.out.println(service.add(vo));
	}
}

运行结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值