目录

1..注入属性-外部 bean

(1)创建两个类 service 类和 dao 类【分别创建两个包存放两个类】

(2)在 service 调用 dao 里面的方法

(3)(后来做法)在Spring 配置文件中进行配置


1..注入属性-外部 bean

首先,复习一下javaEE的三层结构 web层、service层、dao层

我们常常提到java EE的三层或者四层结构。
四层架构:
展示层(web层)、业务逻辑层、数据访问层、信息资源层
四层架构在是开发企业应用时使用的非常经典的划分模式。
web层负责前端展示和用户请求的处理。mvc是一个设计模式,主要用户构建用户界面,目的是把展示逻辑和逻辑分离。web层通常会使用MVC模式进行构建,经常使用的mvc框架包括spring mvc,struts等,都是在web层或者展示层使用的。
业务逻辑层一般应用中会有一层service抽象,实现核心业务逻辑,事务控制也在这一层实现。
数据访问层也即dao层,重点负责数据库访问,完成持久化功能。
信息资源层主要服务资源的存储。
所以mvc和四层(三层)结构有关系,四层架构是应用的体系(分层)结构,描述了整个应用的一个完整的划分,而mvc是一个设计模式,通常会用于四层架构的展示层的构建上。

那么,通过service层去调用dao层这个过程就是引入外部bean

实现步骤:

(1)创建两个类 service 类和 dao 类【分别创建两个包存放两个类】

在service包中添加UserService类

package com.lbj.spring5.service;public class UserService {public void add(){System.out.println("service add............");}
}

在dao包中添加UserDao的接口类

再在dao包中添加UserDaoImpl实现类,让它实现UserDao的接口

结构图:

接口类UserDao的代码如下:

package com.lbj.spring5.dao;/*** Created by 14811 on 2020/12/1.*/
public class UserDaoImpl implements UserDao {@Overridepublic void update() {System.out.println("dao update..........");}
}

实现类UserDaoImpl的代码如下:

package com.lbj.spring5.dao;public class UserDaoImpl implements UserDao {@Overridepublic void update() {System.out.println("service add..........");}
}

(2)在 service 调用 dao 里面的方法

原始做法:
在UserService类中调用UserDaoImpl实现类中的方法【底层:Service要的到dao的对象】

【接口=new它的实现类的对象,这个的过程就叫做多态(抽象类或接口当做父类,父类引用指向子类对象)】

代码如下:

package com.lbj.spring5.service;import com.lbj.spring5.dao.UserDao;
import com.lbj.spring5.dao.UserDaoImpl;public class UserService {public void add(){System.out.println("service add............");//创建UserDao对象UserDao dao=new UserDaoImpl();//调用实现类中的方法dao.update();}
}

(3)(后来做法)在Spring 配置文件中进行配置

第一步:在UserService类中创建UserDao类型属性,生成set方法

注意:Spring的属性也可以是类的属性,不仅仅是String类型的属性

UserService类代码如下:

package com.lbj.spring5.service;import com.lbj.spring5.dao.UserDao;
import com.lbj.spring5.dao.UserDaoImpl;public class UserService {//创建UserDao类型属性,生成set方法private UserDao userDao;public void setUserDao(UserDao userDao) {this.userDao = userDao;}public void add(){System.out.println("service add............");//调用方法userDao.update();}
}

第二步:为了方便区分我们之前做的实验,我们新建一个bean2.xml

使用ref让一个Bean作为另外一个Bean的成员变量

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!--1.service和dao对象的创建--><bean id="userService" class="com.lbj.spring5.service.UserService"><!--注入userDao对象name属性值:类里面属性的名称ref属性:创建userDao对象bean标签的id值--><property name="userDao" ref="userDaoImpl"></property></bean><bean id="userDaoImpl" class="com.lbj.spring5.dao.UserDaoImpl"></bean>
</beans>

最后,为了方便测试,我们新建一个测试类 TestBean 类

代码如下:

package com.lbj.spring5.testdemo;import com.lbj.spring5.service.UserService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestBean {@Testpublic void testUserService(){//1.加载spring配置文件ApplicationContext context=new ClassPathXmlApplicationContext("bean2.xml");//2.获取配置创建的对象,通过context得到对象UserService userService=context.getBean("userService", UserService.class);//4.通过userService调用add()方法userService.add();}
}

结果如下:

IOC操作Bean管理XML方式(注入外部bean)相关推荐

  1. IOC操作Bean管理XML方式(外部属性文件)

    目录 IOC操作Bean管理XML方式(外部属性文件) 前情引入: 实验演示: 1.直接配置数据库信息 (1)配置德鲁伊连接池 (2)引入德鲁伊连接池jar包 (3)创建一个bean6.xml配置文件 ...

  2. [Spring5]IOC容器_Bean管理XML方式_外部属性文件

    IOC操作Bean管理(外部属性文件) 1.直接配置数据库信息 (1)配置德鲁伊druid连接池 (2)引入德鲁伊druid连接池依赖jar包 <!--直接配置连接池--><bean ...

  3. IOC操作Bean管理XML方式(注入集合类型属性)

    目录 IOC操作Bean管理XML方式(注入集合类型属性) (1)首先进行环境的搭建和准备 (2)创建一个类:用来完成集合类型属性注入 (3)在Spring 配置文件进行配置 (4)编写一个测试类进行 ...

  4. IOC操作Bean管理XML方式(注入空值和特殊符号)

    IOC操作Bean管理XML方式(注入空值和特殊符号) 目录 IOC操作Bean管理XML方式(注入空值和特殊符号) (1)通过null标签注入空值: 标签注入空值 (2)属性值中包含特殊符号: 方法 ...

  5. IOC操作Bean管理XML方式(有参构造注入属性)

    IOC操作Bean管理XML方式 目录 有参构造注入属性 (1)步骤(创建类,定义属性,创建属性对应的有参构造方法): (2)步骤:在Spring 的xml配置文件中进行配置 (3)步骤:进行测试 结 ...

  6. IOC操作Bean管理XML方式(bean 的生命周期)

    目录 IOC操作Bean管理XML方式(bean 的生命周期) 1.bean 的生命周期(在单例模式下的生命周期) (1)通过构造器创建 bean 的实例(执行类中无参构造方法去创建对象) (2)为 ...

  7. IOC操作Bean管理XML方式(xml自动装配)

    目录 IOC操作Bean管理XML方式(xml自动装配) 一.演示自动装配过程 (1)根据 属性名称 装配 步骤一: 步骤二: 步骤三: (2)根据 属性类型 装配 (2.1)根据 类型 自动装配产生 ...

  8. IOC操作Bean管理XML方式(bean的作用域)

    目录 IOC操作Bean管理XML方式(bean的作用域) 1.在Spring 里面,设置创建 bean 实例是单实例还是多实例的方式 (1)在Spring 配置文件bean 标签里面有属性(scop ...

  9. IOC操作Bean管理XML方式(FactoryBean)

    目录 IOC操作Bean管理XML方式(FactoryBean) Spring 有两种类型的bean 第一种:是普通的 bean 第二种:工厂bean FactoryBean 第一步:创建类,让这个类 ...

  10. Spring——Bean管理-xml方式进行属性注入

    目录 一.xml方式创建对象 二.xml方式注入属性 第①种方式注入:set方法注入 第②种方式注入:有参构造函数注入 constructor-arg:通过构造函数注入 用name标签属性: 不按照顺 ...

最新文章

  1. 面试:SpringBoot中的条件注解底层是如何实现的?
  2. 交换变量和String类初始化:JAVA入门基础
  3. Python中的shape和reshape()
  4. mysql分库分表方案之sharding-jdbc使用(非demo示例)
  5. 一个备份sql server文件.bak还原成两个数据库
  6. python包含多个元组的元组_如何在python中将多个”列出的”元组连接成一个元组?...
  7. 一、crontab 定时任务
  8. Sublime Text 3配置与vim模式(待完整)
  9. 华为p20nfc怎么复制门禁卡_“碰一碰”即可开大门,华为手机上这个“逆天”功能,你用了吗?...
  10. 喜欢熬夜的人注意!出现3大迹象时,说明身体极度危险!
  11. JavaScript比较是否在某时间段内
  12. python下载安装requests库
  13. 模糊pid控制算法matlab程序解读,基于Matlab的模糊PID控制研究
  14. 简单分压电路,检测电压用
  15. 考研和计算机三级,考研考计算机与考软件有什么区别吗
  16. 王道计算机网络 第三章 数据链路层
  17. python+selenium打开浏览器-设置浏览器路径和驱动器路径
  18. 我用unity开发的第一款游戏demo心得
  19. 22个无版权限制的高清无码图库站
  20. 使用spm预处理fMRI数据

热门文章

  1. SQL基础--同义词
  2. 【 Date 对象 参考手册】
  3. 个人对响应式布局的理解
  4. ASP.NET数据库编程入门
  5. 流式处理和批处理的区别
  6. Leetcode--42.接雨水
  7. linux怎么抓sip包,Ubuntu下使用Wireshark进行抓包分析(含SIP和RTP包)
  8. springboot jar中没有主清单属性_Spring Boot 常见错误及解决方法
  9. 鸿蒙系统发布会16号几点,华为鸿蒙手机系统正式定档发布,12月16日于我们见面...
  10. java c 基本类型_java 基本数据类型