扶余网站建设,支付宝网站开发,哈尔滨百姓网免费发布信息,wordpress有名的网站文章目录1 SpringBootWeb快速入门1.1Spring官网1.2 Web分析2. HTTP协议2.1 HTTP介绍34 SpringBootWeb请求响应5 响应6 分层解耦6.1 三层架构6.1.1 三层架构介绍6.1.2 基于三层架构的程序执行流程#xff1a;6.1.3 代码拆分6.2 分层解耦6.2.1 内聚、耦合6.2.2 解耦思路6.3 IOC6.1.3 代码拆分6.2 分层解耦6.2.1 内聚、耦合6.2.2 解耦思路6.3 IOCDI6.3.1 IOC详解6.3.1.1 bean的声明6.3.1.2 组件扫描6.1.2 DI详解1 SpringBootWeb快速入门
1.1Spring官网
https://spring.io spring家族的技术都是基于SpringFramework的SpringFramework中提供很多实用功能如依赖注入、事务管理、web开发支持、数据访问、消息服务等。 1.2 Web分析 浏览器和服务器两端进行数据交互使用http协议 2. HTTP协议
2.1 HTTP介绍 HTTPHyper Text Transfer Protocol(超文本传输协议)规定了浏览器与服务器之间数据传输的规则。 3
4 SpringBootWeb请求响应
5 响应
6 分层解耦
6.1 三层架构
6.1.1 三层架构介绍 在我们进行程序设计及程序开发时尽可能让每一个接口、类、方法的职责更单一些单一职责原则。 单一职责原则一个类或一个方法就只做一件事情只管一块功能。 根据上述案例的处理逻辑呢从组成上分为三部分 数据访问负责业务数据的维护操作包括增、删、改、查等操作。逻辑处理负责业务逻辑处理的代码。请求处理、响应数据负责接收页面的请求给页面响应数据。 按照上述三个组成部分在我们项目开发中呢可以将代码分为三层 Controller控制层。接收前端发送的请求对请求进行处理并响应数据。Service业务逻辑层。处理具体的业务逻辑。Dao数据访问层(Data Access Object)也称为持久层。负责数据访问操作包括数据的增、删、改、查。 6.1.2 基于三层架构的程序执行流程 前端发起请求由Controller层接收Controller响应数据给前端Controller层调用Service层来进行逻辑处理Service层处理完后把处理结果返回给Controller层Serivce层调用Dao层逻辑处理过程中需要用到的数据从Dao层获取Dao层操作文件中数据Dao拿到的数据会返回给Service层 6.1.3 代码拆分
包名备注作用控制层包名xxxx.controller接收前端发送请求对请求进行处理并响应数据业务逻辑层包名xxxx.service处理业务逻辑数据访问层包名xxxx.dao数据访问操作包含数据的增、删、改、查三层架构的好处 复用性强便于维护利用扩展 6.2 分层解耦
6.2.1 内聚、耦合 内聚软件中各个功能模块内部的功能联系。 耦合衡量软件中各个层/模块间的依赖、关联的程度。 软件设计原则高内聚低耦合。 6.2.2 解耦思路 解决思路是 提供一个容器容器中存储一些对象(例EmpService对象)controller程序从容器中获取EmpService类型的对象 实现上述解耦操作涉及到Spring中的两个核心概念 控制反转( Inversion Of Control简称IOC)。对象的创建控制权由程序自身转移到外部容器这种思想称为控制反转。 依赖注入(Dependency Injection简称DI)。容器为应用程序提供运行时所依赖的资源称之为依赖注入。 IOC容器中创建、管理的对象称之为bean对象 6.3 IOCDI
6.3.1 IOC详解
6.3.1.1 bean的声明 IOC控制反转就是将对象的控制权交给Spring的IOC容器由IOC容器创建及管理对象。IOC容器创建的对象称为bean对象。 要把某个对象交给IOC容器管理需要在类上添加注解Component 为了更好标识web应用程序中bean对象到归属于哪层又提供了Component的衍生注解 Controller 标注在控制层类上Service 标注在业务层类上Repository 标注在数据访问层类上 注解说明位置ControllerComponent的衍生注解标注在控制器类上ServiceComponent的衍生注解标注在业务类上RepositoryComponent的衍生注解标注在数据访问类上由于与mybatis整合用的少Component声明bean的基础注解不属于以上三类时用此注解
6.3.1.2 组件扫描 bean想要生效需要被组件扫描 运行程序后报错 为什么没有找到bean对象呢 使用四大注解声明的bean要想生效需要被组件扫描注解ComponentScan扫描 ComponentScan注解没有显式配置但实际上已经包含在引导类声明注解 SpringBootApplication 中默认扫描的范围是SpringBoot启动类所在包及其子包。 如下结构扫描全部 6.1.2 DI详解 依赖注入指IOC容器要为应用程序提供运行时所依赖的资源而资源指的就是对象。 Autowired注解默认是按照类型进行自动装配的去IOC容器中找某个类型的对象然后完成注入操作 入门程序举例在EmpController运行时要到IOC容器中找EmpService类型的对象而IOC容器中刚好有EmpService类型的对象所以就找到了这个类型的对象完成注入操作。 那如果在IOC容器中存在多个相同类型的bean对象会出现什么情况呢 程序运行会报错 如何解决上述问题呢Spring提供了以下几种解决方案 Primary 使用Primary注解当存在多个相同类型的Bean注入时加上Primary注解来确定默认的实现。 Qualifier 使用Qualifier注解指定当前要注入的bean对象。 在Qualifier的value属性中指定注入的bean的名称。Qualifier注解不能单独使用必须配合Autowired使用 Resource 使用Resource注解是按照bean的名称进行注入。通过name属性指定要注入的bean的名称。 面试题 Autowird 与 Resource的区别 Autowired 是spring框架提供的注解而**Resource是JDK提供**的注解Autowired 默认是按照类型注入而**Resource是按照名称注入**