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

目录

 

 

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();}
}

 结果如下:

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501173.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据增强 transform_深度学习-Pytorch框架学习之数据处理篇

前言数据是深度学习的核心&#xff0c;大部分论文里都会提到data-driven这个词&#xff0c;也就是数据驱动的意思。基本的模型搭建完成后&#xff0c;如何处理数据&#xff0c;如何将数据送给网络&#xff0c;如何做数据增强等等&#xff0c;对于提高网络的性能都十分重要&…

python元祖用法_Python序列(列表list和元组tuple)用法完全攻略

所谓序列&#xff0c;指的是一种包含多项数据的数据结构&#xff0c;序列包含的多个数据项(也叫成员)按顺序排列&#xff0c;可通过索引来访问成员。Python 的常见序列类型包括字符串、列表和元组。前一章介绍过的字符串&#xff0c;其实就是一种常见的序列&#xff0c;通过索引…

IOC操作Bean管理XML方式(注入内部 bean 和 级联赋值)

目录 1.注入属性-内部 bean &#xff08;1&#xff09;一对多关系&#xff1a;部门和员工 &#xff08;2&#xff09;在实体类之间表示一对多关系 &#xff08;3&#xff09;在Spring 配置文件中进行配置 2.注入属性-级联赋值 &#xff08;1&#xff09;第一种写法类似外部…

单处理机系统的进程调度动态优先_操作系统复习笔记(王道)C2.1

进程与线程一、进程特征和概念前提&#xff1a;允许多个程序并发执行。1.概念PCB(process control block)进程控制块&#xff0c;系统利用 PCB 来描述进程的基本情况和运行状 态&#xff0c;进而控制和管理进程。PCB是进程存在的唯一标志。进程是进程实体的运行过程&#xff0c…

非线性动力学_非线性科学中的现代数学方法:综述

Ch0【引言】本文是作者的一个总结&#xff0c;力图在极度繁杂的数理知识体系中摘选出那些最广泛应用的核心工具及思想。本文主要关注的问题都是非线性的、动态的。具体地讲&#xff0c;主要涉及的是&#xff1a;微分动力系统、泛函的最优化初步&#xff08;但不涉及最优控制及微…

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

目录 IOC操作Bean管理XML方式&#xff08;注入集合类型属性&#xff09; &#xff08;1&#xff09;首先进行环境的搭建和准备 &#xff08;2&#xff09;创建一个类&#xff1a;用来完成集合类型属性注入 &#xff08;3&#xff09;在Spring 配置文件进行配置 &#xff0…

matlab 最小二乘法拟合_高中数学:最小二乘法与线性回归方程

1、怎样的拟合直线最好&#xff1f;——与所有点都近&#xff0c;即与所有点的距离之和最小。最小二乘法可以帮助我们在进行线性拟合时&#xff0c;如何选择“最好”的直线。要注意的是&#xff0c;利用实验数据进行拟合时&#xff0c;所用数据的多少直接影响拟合的结果&#x…

python多次循环输出_python循环

python_day_2一. 循环. while循环while 条件:代码块(循环体)执行流程:判断条件是否为真. 如果真. 执行代码块再次判断条件是否为真......当条件为假.执行else 跳出循环. 循环结束1.让计算机连续打印5次corn,每次延迟一秒:importtimecount 1while count <5:print("corn&…

预充电电路工作原理_LED触摸调光台灯控制电路板的工作原理

一款美观实用的台灯堪称书桌上的艺术品&#xff0c;看着书桌上精致美观的台灯&#xff0c;可能还会增加一些阅读的乐趣吧。那么触摸开关台灯的工作原理到底是怎么的呢?两按键触摸调光电路板工作原理:一、两按键触摸调光电路板&#xff0c;触摸芯片工作电压2.4-5.5V。输入也可用…

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

目录 IOC操作Bean管理XML方式&#xff08;FactoryBean&#xff09; Spring 有两种类型的bean 第一种&#xff1a;是普通的 bean 第二种&#xff1a;工厂bean FactoryBean 第一步&#xff1a;创建类&#xff0c;让这个类作为工厂bean 第二步&#xff1a;在类中实现接口里面…

python中自定义类中的self_Python类和构造方法

1.面向对象介绍描述&#xff1a;是函数的一个变种,在Python中,有函数式编程和面向对象编程,java和C#之类只能把函数写到类里,没有函数式编程,所以只有面向对象,所以在Python中有了选择,可能就变得有点麻烦,但是在Python里,函数式编程是可以完成所有的功能的,人都是想把事情变得…

激光slam_机器人主流定位技术,激光SLAM与视觉SLAM谁更胜一筹

定位技术是机器人实现自主定位导航的最基本环节&#xff0c;是机器人在二维工作环境中相对于全局坐标的位置及其本身的姿态。目前SLAM (Simultaneous Localization and Mapping&#xff0c;即时定位与地图构建)是业内主流的定位技术&#xff0c;有激光SLAM和视觉SLAM之分。什么…

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

目录 IOC操作Bean管理XML方式&#xff08;bean的作用域&#xff09; 1.在Spring 里面&#xff0c;设置创建 bean 实例是单实例还是多实例的方式 &#xff08;1&#xff09;在Spring 配置文件bean 标签里面有属性&#xff08;scope&#xff09;用于设置单实例还是多实例 &am…

bucket sort sample sort 并行_双调排序Bitonic Sort,适合并行计算的排序算法

双调排序是data-independent的排序&#xff0c; 即比较顺序与数据无关的排序方法&#xff0c; 特别适合做并行计算&#xff0c;例如用GPU、fpga来计算。1、双调序列在了解双调排序算法之前&#xff0c;我们先来看看什么是双调序列。 双调序列是一个先单调递增后单调递减&#x…

边缘检测后去除噪点_修图前vs修图后,原来那些网红“照骗”都是这样修出来的!...

如今手机上有许多功能强大的后期app都能帮助我们轻松实现一键修图我们也经常可以在网上看到各路大神们各显神通的手机修图作品无论是风景、人像还是创意修图前和修图后对比强烈、美若两图看到这里你是否想问为什么同样是用手机修图别人修的图总是比我好看到底是哪里出错了呢&am…

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

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

springboot listener_Springboot 全套面试提升宝典,为金三银四冲刺

简介&#xff1a;Spring Boot是由Pivotal团队提供的全新框架&#xff0c;其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置&#xff0c;从而使开发人员不再需要定义样板化的配置。通过这种方式&#xff0c;Spring Boot致力于在蓬勃发…

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

目录 IOC操作Bean管理XML方式&#xff08;xml自动装配&#xff09; 一.演示自动装配过程 &#xff08;1&#xff09;根据 属性名称 装配 步骤一&#xff1a; 步骤二&#xff1a; 步骤三&#xff1a; &#xff08;2&#xff09;根据 属性类型 装配 &#xff08;2.1&#…

python 判断文件是否被占用_python 在删除文件的时候检测该文件是否被其他线程或者进程占用?...

永远不要忘记&#xff1a;跨平台特性是Python的血液和命脉。在Linux下进程正在使用的文件&#xff0c;是不妨碍其他进程去移动/删除/更名的。因为在Linux下由inode确定文件&#xff0c;inode和文件路径虽然存在对应关系&#xff0c;但本质上是分离的。删除了某进程正在使用的文…

python怎么索引json中的值_使用Python在JSON中查找值

我之前已经成功地解析了JSON文件中的数据&#xff0c;但现在我要实现的函数遇到了问题。我有一个JSON格式的姓名、身份证号码和出生日期列表。我想在Python中得到的是让用户输入一个名字并检索他的身份证号码和出生日期(如果有的话)。这是我的JSON示例文件&#xff1a;[{"…