一般问题 不同版本的 Spring Framework 有哪些主要功能? Version Feature Spring 2.5 发布于 2007 年。这是第一个支持注解的版本。 Spring 3.0 发布于 2009 年。它完全利用了 Java5 中的改进,并为 JEE6 提供了支持。 Spring 4.0 发布于 2013 年。这是第一个完全支持 JAVA8 的版本。 什么是 Spring Framework? Spring 是一个开源应用框架,旨在降低应用程序开发的复杂度。 它是轻量级、松散耦合的。 它具有分层体系结构,允许用户选择组件,同时还为 J2EE 应用程序开发提供了一个有凝聚力的框架。 它可以集成其他框架,如 Structs、Hibernate、EJB 等,所以又称为框架的框架。 列举 Spring Framework 的优点。 由于 Spring Frameworks 的分层架构,用户可以自由选择自己需要的组件。 Spring Framework 支持 POJO(Plain Old Java Object) 编程,从而具备持续集 ...
Spring Bean 简介 如何注册一个 Spring Bean? 通过 BeanDefinition 和外部单体对象来注册 BeanDefinition 什么是 BeanDefinition BeanDefinition 是 Spring Framework 中定义 Bean 的配置元信息接口,包含: Bean 类名 Bean 行为配置元素,如:作用域、自动绑定的模式、生命周期回调等 其他 Bean 引用 配置设置,如 Bean 属性(Properties) l#beandefinition-元信息)BeanDefinition 元信息 BeanDefinition 元信息如下: 属性(Property) 说明 Class Bean 全类名,必须是具体类,不能用抽象类或接口 Name Bean 的名称或者 ID Scope Bean 的作用域(如:singleton、prototype 等) Constructor arguments Bean 构造器参数(用于依赖注入) Properties Bean 属性设置(用于依赖注入) Aut ...
IoC 概念简介 IoC 是什么 IoC,是 Inversion of Control 的缩写,即控制反转。 上层模块不应该依赖于下层模块,它们共同依赖于一个抽象 抽象不能依赖于具体实现,具体实现依赖于抽象 注:又称为依赖倒置原则。这是设计模式六大原则之一。 IoC 不是什么技术,而是一种设计思想。在 Java 开发中,IoC 意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。如何理解 Ioc 呢?理解 Ioc 的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下: **谁控制谁,控制什么:**传统 JavaSE 程序设计,我们直接在对象内部通过 new 进行创建对象,是程序主动去创建依赖对象;而 IoC 是有专门一个容器来创建这些对象,即由 IoC 容器来控制对象的创建;谁控制谁?当然是 IoC 容器控制了对象;控制什么?那就是主要控制了外部资源获取(不只是对象包括比如文件等)。 **为何是反转,哪些方面反转了:**有反转就有正转,传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象, ...
好处:大幅度减少 Spring 配置 坏处:依赖不能明确管理,可能会有多个 bean 同时符合注入规则,没有清晰的依赖关系。 在装配的时候会有两种方式,byName和byType两种。 byName:根据属性名自动装配。此选项将检查容器并根据名字查找与属性完全一致的 bean,并将其与属性自动装配。 byType:如果容器中存在一个与指定属性类型相同的 bean,那么将与该属性自动装配;如果存在多个该类型 bean,那么抛出异常,并指出不能使用 byType 方式进行自动装配;如果没有找到相匹配的 bean,则什么事都不发生,也可以通过设置 什么是自动装配 自动装配:也就是 Spring 会在容器中自动的查找,并自动的给 bean 装配及其关联的属性 涉及到自动装配 bean 的依赖关系时,Spring 有多种处理方式。Spring 提供了 4 种自动装配策略 123456789101112131415161718public interface AutowireCapableBeanFactory extends BeanFactory { // 无需自动装配 ...
写在前面得话 学习@Autowired 之前建议先学会使用 byType 和 byNameSpring的自动装配https://hgm.vercel.app/post/63755f3a/ @Autowired 详解 首先要知道另一个东西,default-autowire,它是在 xml 文件中进行配置的,可以设置为 byName、byType、constructor 和 autodetect;比如 byName,不用显式的在 bean 中写出依赖的对象,它会自动的匹配其它 bean 中 id 名与本 bean 的 set**相同的,并自动装载。 @Autowired 是用在 JavaBean 中的注解,通过 byType 形式,用来给指定的字段或方法注入所需的外部资源。 两者的功能是一样的,就是能减少或者消除属性或构造器参数的设置,只是配置地方不一样而已。 autowire 四种模式的区别 先看一下 bean 实例化和@Autowired 装配过程: 一切都是从 b ...
@Configuration 的使用 从 Spring3.0,@Configuration 用于定义配置类,可替换 xml 配置文件,被注解的类内部包含有一个或多个被@Bean 注解的方法,这些方法将会被 AnnotationConfigApplicationContext 或 AnnotationConfigWebApplicationContext 类进行扫描,并用于构建 bean 定义,初始化 Spring 容器。也就是说使用了这个注解完全不需要我们手动去配置applicationContext.xml了 注意:@Configuration 注解的配置类有如下要求: @Configuration 不可以是 final 类型; @Configuration 不可以是匿名类; 嵌套的 configuration 必须是静态类。 @Configuation 加载 Spring 方法 @Configuration 配置 spring 并启动 spring 容器 @Configuration 标注在类上,相当于把该类作为 spring 的 xml 配置文件中的<beans&g ...
在探究注解前先了解一下注解,何为注解?注解本质上就是一个类,开发中我们可以使用注解 取代 xml配置文件。 注意:在使用注解开发时,请查看对应的框架是否需要开启注解支持,否则用了注解也无效!!! IOC 容器相关 @Componen: @Component注解 @component(value):用于创建对象的,作用于类.value:指定 bean 的 id。如果不指定 value 属性,默认 bean 的 id 是当前类的类名。首字母小写。@component是 spring 中的一个注解,它的作用就是实现 bean 的注入,代替了传统的 xml 方式注入 bean123456//@Component组件 等价于:<bean id="user" class="com.ms.pojo.User"/>//也说明这个类被Spring接管了,注册到了容器中@Component("user") //("user")其实就是Bean id ...
更新记录 本人站长也正在学习当中,如果有纠错以及意见可以在下方评论区留言,我会尽快回复您,感谢您对本站的支持20222022-04-04板块做了相应的优化补充了一些图片和一些代码2022-03-30文章发布 参考教程 注解类注解名称教程贴@Controller 注解教程其他参考方向教程贴转发和重定向的区别和使用教程 SpringMVC 简介 什么是MVC MVC 是一种软件架构的思想,将软件按照模型、视图、控制器来划分M:Model,模型层,指工程中的 JavaBean,作用是处理数据JavaBean 分为两类:一类称为实体类 Bean:专门存储业务数据的,如 Student、User 等一类称为业务处理 Bean:指 Service 或 Dao 对象,专门用于处理业务逻辑和数据访问。V:V ...
mybatis 的常用注解 注解 说明 @Insert 实现新增 @Delete 实现删除 @Update 实现更新 @Select 实现查询 @Result 实现结果集封装 @Results 可以与@Result 一起使用,封装多个结果集 @ResultMap 实现引用@Results 定义的封装 @One 实现一对一结果集封装 @Many 实现一对多结果集封装 @SelectProvider 实现动态 SQL 映射 @CacheNamespace 实现注解二级缓存的使用 使用 Mybatis 注解实现基本 CRUD 项目目录结构 编写实体类 User: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172package com.keafmd.domain;import java.io.Serial ...
什么是 AOP ​ AOP(Aspect-OrientedProgramming,面向切面编程),可以说是 OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP 引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP 则显得无能为力。也就是说,OOP 允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如日志功能。日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能毫无关系。对于其他类型的代码,如安全性、异常处理和透明的持续性也是如此。这种散布在各处的无关的代码被称为横切(cross-cutting)代码,在 OOP 设计中,它导致了大量代码的重复,而不利于各个模块的重用。 ​ 而 AOP 技术则恰恰相反,它利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其名为“Aspect”,即方面。所谓“方面”,简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系 ...
前言 最近在看 B 站颜群老师的课程,Javaweb>spring>springMVC>mybatis>spring 高级,一路走来,跌跌撞撞,发现 spring 也不过尔尔,说白了,spring 就是想尽办法将 new 做的更简单,更完美,更可配置。 Spring 的一个核心功能是 IOC,就是将 Bean 初始化加载到容器中,Bean 是如何加载到容器的,可以使用 Spring 注解方式或者 Spring XML 配置方式。 Spring 注解方式减少了配置文件内容,更加便于管理,并且使用注解可以大大提高了开发效率! 注解本身是没有功能的,和 xml 一样,注解和 xml 都是一种元数据,元数据即解释数据的数据,也就是所谓的配置。 xml 和注解的最佳实践: xml 用来管理 bean; 注解只负责完成属性的注入; 使用注解唯一需要注意的就是,必须开启注解的支持: 123//扫描指定包下的全部的标有@Component的类,并注册成bean.<context:component-scan base-package="com. ...
SpringDI(依赖注入) DI 概述 Dependency Injection即为依赖注入,简称 DI 。 简单来说,在 Spring 创建对象的同时,为其属性赋值,称之为依赖注入。 形象来说,组件之间依赖关系由容器在运行期决定的,即由容器动态的将某个依赖关系注入到组件之中。 什么是 DI 了解 DI 的思想 简单了解了 DI(依赖注入),在看依赖注入这个词,我们也可以将依赖注入以 IOC(控制反转)的形式拆分它。 顾名思义,依赖注入是由“依赖”和“注入”两个词汇组合而成,那么我们再一次顺藤摸瓜,分别分析这两个词语! 依赖 依赖一词,可以拆分成很多元素。比如说,达成依赖条件必须是两个对象 ,谁依赖谁 ,某一个对象依赖另一个对象的什么 。这里我们可以根据这几个条件列举出这几种情况: 关于谁依赖与谁,当然是应用程序依赖于 IOC 容器。因为应用程序依赖于 IOC 容器提供的对象所需外部资源,所以就产生了这种依赖关系。(可以理解为入口,虽然不是这么严谨吧!) 注入 注入一次,可以也可以拆分成很多元素。比如说,注入可以分解成谁注入谁 ,注入了什么 。这里 ...