个人网站建设的目标ps海报素材网站
- 作者: 五速梦信息网
- 时间: 2026年03月21日 11:11
当前位置: 首页 > news >正文
个人网站建设的目标,ps海报素材网站,关于网站开发的引言,广告设计公司的进项有哪些Spring基础
什么是spring框架
Spring 框架是一个用于构建企业级 Java 应用程序的开源框架。【Java项目快速构建轻量级框架】我们一般说 Spring 框架指的都是 Spring Framework#xff0c;它是很多模块的集合#xff0c;使用这些模块可以很方便地协助我们进行开发。【根据模…Spring基础
什么是spring框架
Spring 框架是一个用于构建企业级 Java 应用程序的开源框架。【Java项目快速构建轻量级框架】我们一般说 Spring 框架指的都是 Spring Framework它是很多模块的集合使用这些模块可以很方便地协助我们进行开发。【根据模块说明】作用【简化开发】【框架整合】 Spring 是一个轻量级Java框架有七大模块分别为 数据Web切面工具消息核心测试 核心模块有 BeansCoreContextExpression IOC 和 DI⭐切面模块主要有 AOP 涉及到这个 AOP 编程 ⭐Web模块有 WebWebMVC, WebSocket, WebFlux【MVC】数据模块主要有 ORM 【数据操作】TX【事务】 方便扩展比如 整合邮件缓存定时任务等 模块有哪些【七大核心模块】 主要关注5个 1.【核心模块】⭐Core Container关注IOCDI 2.【切面模块】⭐AOP 3.【数据模块】⭐Data Access/Integration 4.【Web模块】⭐Spring Web关注MVC 5.【测试模块】⭐Spring Test 6.【消息模块】Messaging 7.【工具模块】Instrumentation没用过
Spring,Spring MVC,Spring Boot 之间什么关系?
Spring指的是 Spring Framework【核心】 SpringMVC是SpringWeb模块的子模块【属于Spring】 SpringBoot是对Spring框架简化【自动配置起步依赖】
如何理解spring属于低侵入式设计
在代码中不需要依赖具体对象在运行时进行自动注入【IOCDI】降低了组件的耦合
依赖的是接口而接口的实现类具有拓展性可以自由选择和组装Spring框架的各个功能模块而不强制要求应用系统的类必须从Spring框架的系统API的某个类来继承或者实现某个接口。
Spring IoC
Spring IOC 实现了什么功能谈谈你对IOC的理解。
Spring IOC 负责创建对象管理对象通过依赖注入DI装配对象、配置对象并且管理这些对象的整个生命周期。
功能 依赖注入DIIOC容器要为应用程序去提供运行时所依赖的资源。 生命周期管理Spring IOC容器还负责管理Bean的生命周期。它会根据配置来创建Bean初始化Bean以及在不再需要时销毁Bean。 配置集中管理Spring IOC容器允许将应用的配置集中到一个或多个地方使得配置的管理更加方便。 控制反转【Ioc】将对象的创建权交由外部容器将Bean加入IOC容器
什么是 Spring BeanSpring IoC容器和容器实现
Bean
简单来说Bean 代指的就是那些被 IoC 容器所管理的对象。
SpringIoC容器介绍
Spring IoC 容器负责实例化、配置和组装 bean组件。容器通过读取配置元数据来获取有关要实例化、配置和组装组件的指令。配置元数据以 XML、Java 注解或 Java 代码形式表现。它允许表达组成应用程序的组件以及这些组件之间丰富的相互依赖关系。
SpringIoC容器具体接口和实现类
SpringIoc容器接口
BeanFactory 接口提供了一种高级配置机制能够管理任何类型的对象它是SpringIoC容器标准化超接口
ApplicationContext 是 BeanFactory 的子接口。 它扩展了以下功能 更容易与 Spring 的 AOP 功能集成消息资源处理用于国际化特定于应用程序给予此接口实现例如Web 应用程序的 WebApplicationContext 简而言之 BeanFactory 提供了配置框架和基本功能而 ApplicationContext 添加了更多特定于企业的功能。 ApplicationContext 是 BeanFactory 的完整超集
ApplicationContext容器实现类
ApplicationContext接口是Spring容器的核心接口初始化时bean立即加载
将一个类声明为 Bean 的注解有哪些?
怎么声明
注解 说明 位置 Controller Component的衍生注解 标注在控制器类上 Service Component的衍生注解 标注在业务类上 Repository Component的衍生注解 标注在数据访问类上由于与mybatis整合用的少 Component 声明bean的基础注解 不属于以上三类时用此注解【自定义类】
Controller、Service、Repository这三个注解只是在Component注解的基础上起了三个新的名字。 还可以使用 Configuration 注解的类中使用 Bean 注解来定义 Bean。这些 Bean 会被 Spring IOC 容器自动创建和管理。【第三方Bean管理】 Component 和 Bean 的区别是什么 Component 注解作用于类而Bean注解作用于方法。Component通常是通过类路径扫描来自动侦测以及自动装配到 Spring 容器中我们可以使用 ComponentScan 注解定义要扫描的路径从中找出标识了需要装配的类自动装配到 Spring 的 bean 容器中。Bean 注解通常是我们在标有该注解的方法中定义产生这个 bean,Bean告诉了 Spring 这是某个类的实例当我需要用它的时候还给我。Bean 注解比 Component 注解的自定义性更强而且很多地方我们只能通过 Bean 注解来注册 bean。比如当我们引用第三方库中的类需要装配到 Spring容器时则只能通过 Bean来实现。 细节 名称问题 value属性指定bean的名字如果没有指定默认为类名首字母小写。 DI 注入的方式有 依赖注入是指IOC容器要为应用程序去提供运行时所依赖的资源而资源指的就是对象。 方式 属性注入构造器注入Setter 注入构造方法参数注入接口注入 Bean属性赋值引用类型自动装配 (DI)
前提一个对象且容器中存在
Autowired自动装配⭐
默认是按照类型进行自动装配的前提参与自动装配的组件需要装配、被装配全部都必须在IoC容器中。
如果存在多个相同类型的bean对象Autowired无法使用
Primary
当存在多个相同类型的Bean注入时加上Primary注解来确定默认的实现。
Qualifier
指定当前要注入的bean对象。 在Qualifier的value属性中指定注入的bean的名称。
Qualifier注解不能单独使用必须配合Autowired使用
Resource类型装配⭐
是按照bean的名称进行注入。通过name属性指定要注入的bean的名称。
Autowired(required true) Qualifier(value “userServiceImpl”) Resource(name“userServiceImpl”) 拓展 Autowired 和Resource使用的比较多一些。 Autowird 与 Resource的区别⭐ Autowired 是spring框架提供的注解而Resource是JDK提供的注解Autowired 默认是按照类型注入而Resource是按照名称注入Resource注解用在属性上、setter方法上。Autowired注解用在属性上、setter方法上、构造方法上、构造方法参数上。 Resource注解属于JDK扩展包所以不在JDK当中需要额外引入以下依赖【高于JDK11或低于JDK8需要引入以下依赖】 dependencygroupIdjakarta.annotation/groupIdartifactIdjakarta.annotation-api/artifactIdversion2.1.1/version
/dependencyBean属性赋值基本类型属性赋值 (DI) 通常用于注入外部化属性 从外部配置文件如 .properties 或 .yaml 文件读取配置值并将其注入到 Bean 属性中的机制。 配置文件application.properties 或 application.yml
application.properties
app.nameMyApplication app.version1.0.0Value Java 类注入配置属性 情况1: \({key} 取外部配置key对应的值!情况2: \){key:defaultValue} 没有key,可以给与默认值 import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component;Componentpublic class AppConfig {Value(\({app.name})private String appName;Value(\){app.version})private String appVersion;// Getter 方法public String getAppName() {return appName;}public String getAppVersion() {return appVersion;}}ConfigurationProperties 另一种方式是使用 ConfigurationProperties 注解它允许将配置文件中的属性映射到一个配置类中。这样可以将一组相关的配置属性绑定到一个 Bean 上。 示例代码 配置文件application.yml app:name: MyApplicationversion: 1.0.0配置类 import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component;Component ConfigurationProperties(prefix app) public class AppProperties {private String name;private String version;// Getter 和 Setter 方法public String getName() {return name;}public void setName(String name) {this.name name;}public String getVersion() {return version;}public void setVersion(String version) {this.version version;} }组件管理 组件周期 概述 bean生命周期bean从创建到销毁的整体过程bean生命周期控制在bean创建后到销毁前做一些事情 Bean 生命周期的主要阶段 Bean 实例化Instantiation Spring 容器通过调用构造器无论是默认构造器还是带参数的构造器来实例化 Bean 对象。这是 Bean 生命周期的第一步。 属性赋值/填充Dependency Injection 在 Bean 实例化之后Spring 会注入其依赖即进行依赖注入通过构造器注入、setter 注入或字段注入等方式来填充 Bean 的属性。 初始化Initialization InitializingBean 接口: 如果 Bean 实现了 InitializingBean 接口Spring 会调用其 afterPropertiesSet() 方法。初始化方法: 如果 Bean 配置了初始化方法通过 PostConstruct 注解或在 XML 配置中定义的 init-methodSpring 会调用这个方法。 使用Usage Bean 在这个阶段被完全初始化可以被应用程序使用。 销毁Destruction DisposableBean 接口: 如果 Bean 实现了 DisposableBean 接口Spring 会调用其 destroy() 方法。销毁方法: 如果 Bean 配置了销毁方法通过 PreDestroy 注解或在 XML 配置中定义的 destroy-methodSpring 会调用这个方法。 件作用域配置 Bean作用域概念 具体创建多少个Bean的实例对象由Bean的作用域Scope属性指定【控制实例化对象个数】 作用域可选值 Bean 是线程安全的吗 在Spring框架中Bean 的线程安全性与其作用域和状态密切相关。下面是关于最常用的两种作用域——singleton 和 prototype——的详细说明 作用域与线程安全 prototype 作用域 定义每次请求都会创建一个新的 Bean 实例。线程安全性由于每次请求创建的是不同的实例因此不存在共享状态的问题线程安全性得以保证。 - 示例ComponentScope(prototype)public class PrototypeBean {// 每次请求都会创建一个新的实例}singleton 作用域 定义Spring IoC 容器中只有一个 Bean 实例。线程安全性由于所有线程共享同一个 Bean 实例如果 Bean 中存在可变的成员变量就可能会导致资源竞争和线程安全问题。 - 示例ComponentScope(singleton)public class SingletonBean {private int counter; // 可变的成员变量}线程安全问题的解决方案 对于 singleton 作用域的有状态 Bean以下是解决线程安全问题的常见方法 避免定义可变的成员变量 尽量将 Bean 设计为无状态 Bean不在 Bean 中定义可变的成员变量。 - 示例ComponentScope(singleton)public class StatelessBean {private final String immutableField; // 不可变的成员变量public StatelessBean(String immutableField) {this.immutableField immutableField;}}使用 ThreadLocal 对于有状态的 Bean可以在类中使用 ThreadLocal 成员变量将可变的状态绑定到当前线程这样每个线程都有自己的变量副本避免了线程安全问题。 - 示例ComponentScope(singleton)public class ThreadLocalBean {private static final ThreadLocalInteger threadLocalCounter ThreadLocal.withInitial(() - 0);public void incrementCounter() {threadLocalCounter.set(threadLocalCounter.get() 1);}public int getCounter() {return threadLocalCounter.get();}}总结 prototype 作用域的 Bean 在每次请求时都会创建新的实例因此是线程安全的。singleton 作用域的 Bean 可能会存在线程安全问题尤其是当 Bean 有状态时。常见的解决办法是避免可变的成员变量或使用 ThreadLocal 以确保每个线程有独立的状态副本。 通过上述方法你可以确保在使用 Spring 的 Bean 时能够处理好线程安全的问题。 Spring AOP 使用场景 方法增强 日志记录 权限控制 什么是AOP AOP英文全称Aspect Oriented Programming面向切面编程、面向方面编程其实说白了面向切面编程就是面向特定方法编程。 AOP是Spring框架的高级技术旨在管理bean对象的过程中底层使用动态代理机制对特定的方法进行编程(功能增强)。 代理模式 代理方式可以解决附加功能代码干扰核心代码和不方便统一维护的问题 概述 代理将非核心逻辑剥离出来以后封装这些非核心逻辑的类、对象、方法。(中介) 动词指做代理这个动作或这项工作名词扮演代理这个角色的类、对象、方法 目标被代理“套用”了核心逻辑代码的类、对象、方法。(房东) 代理在开发中实现的方式具体有两种静态代理[动态代理技术] 静态代理 主动创建代理类 public class CalculatorStaticProxy implements Calculator {// 将被代理的目标对象声明为成员变量private Calculator target;//使用构造函数传入目标public CalculatorStaticProxy(Calculator target) {this.target target;}Overridepublic int add(int i, int j) {// 附加功能由代理类中的代理方法来实现System.out.println(参数是 i , j);// 通过目标对象来实现核心业务逻辑int addResult target.add(i, j);System.out.println(方法内部 result result);return addResult;}动态代理代理自由分配 动态代理技术分类 JDK动态代理Java原生JDK原生的实现方式需要被代理的目标类必须实现接口他会根据目标类的接口动态生成一个代理对象代理对象和目标对象有相同的接口拜把子cglib第三方spring已经集成通过继承被代理的目标类实现代理所以不需要目标类实现接口认干爹 Spring AOP 就是基于动态代理的如果要代理的对象实现了某个接口那么 Spring AOP 会使用 JDK Proxy去创建代理对象而对于没有实现接口的对象就无法使用 JDK Proxy 去进行代理了这时候 Spring AOP 会使用 Cglib 生成一个被代理对象的子类来作为代理。 动态代理:Spring AOP使用动态代理技术在目标对象方法执行时将切面的逻辑织入到目标对象的方法中 OOP 和 AOP 的区别是什么 OOP面向对象编程纵向结构关系关注类之间的关系.OOP引入封装、继承、多态等概念来建立一种对象层次结构用于模拟公共行为的一个集 合。它导致了大量代码的重复而不利于各个模块的重用。 AOP可以说是OOPObject Oriented Programming面向对象编程的补充和完善。AOP面向切面编程横向结构关系关注同一层次类的内容 剖解开封装的对象内部并将那些影响了多个类的公共行为封装到一个可重用模块使用AOP可以在不修改原来代码的基础上添加新功能。 AOP的实现用到了哪种设计模式它有哪些实现方式 Spring AOP面向切面编程的实现主要用到了以下设计模式 代理模式Spring AOP是围绕着代理模式设计的。这里的代理模式其实就是指使用一个代理对象来控制对原对象的访问这个代理对象在原对象的基础上增加了一些额外的功能。工厂模式在Spring AOP中工厂模式主要用于创建代理对象和目标对象。 Spring AOP的实现方式主要有以下几种 JDK动态代理JDK动态代理主要针对目标对象的接口进行代理动态生成接口的实现类。这种方式需要目标对象实现一个或多个接口否则不能使用JDK动态代理)。CGLIB代理CGLIB代理可以针对类进行代理生成目标类的子类。这种方式不需要目标对象实现接口也可以进行代理。Spring API实现AOP通过实现Spring提供的AOP接口如MethodBeforeAdvice、AfterReturningAdvice、MethodInterceptor等来实现AOP。自定义类实现AOP通过自定义切入类和配置来实现AOP。通过使用Spring的Aspect、Pointcut、Before、After等注解来实现AOP 理解什么是连接点、切面、切点、通知、目标对象、织入、引入。 连接点 JoinPoint要增强的哪些方法目标方法 通知 Advice进行增强的重复逻辑也就是共性的功能。增强方法 通知是切面在连接点处执行的代码例如在方法调用前、方法调用后、方法抛出异常时执行的代码。通知可以分为 Before、After、AfterReturning、AfterThrowing 和 Around 五种类型 Around环绕通知此注解标注的通知方法在目标方法前、后都被执行Before前置通知此注解标注的通知方法在目标方法前被执行After 后置通知此注解标注的通知方法在目标方法后被执行无论是否有异常都会执行AfterReturning 返回后通知此注解标注的通知方法在目标方法后被执行有异常不会执行AfterThrowing 异常后通知此注解标注的通知方法发生异常后执行 切入点 PointCut匹配连接点的条件通知仅会在切入点方法执行时被应用为共性的功能标记目标方法 切面 Aspect描述通知与切入点的对应关系通知切入点【针对切入点的通知的完整方法】 切面所在的类我们一般称为切面类被Aspect注解标识的类 目标对象Target通知所应用的对象要增强目标方法所在对象 织入 weave指把通知应用到目标上生成代理对象的过程。 引入Introduction引入允许我们向现有类添加新方法或属性 多个切面的执行顺序如何控制 默认按照切面类的类名字母排序 目标方法前的通知方法字母排名靠前的先执行目标方法后的通知方法字母排名靠前的后执行 使用 Order 注解可以控制切面的优先级 Order(较小的数)优先级高Order(较大的数)优先级低 Spring TX 事务 概述 事务是一组操作的集合它是一个不可分割的工作单位。事务会把所有的操作作为一个整体一起向数据库提交或者是撤销操作请求。所以这组操作要么同时成功要么同时失败。Spring中为声明式事务。 Spring事务管理 注SpringBoot项目会自动配置一个 DataSourceTransactionManager所以我们只需在方法或者类加上 Transactional 注解就自动纳入 Spring 的事务管理了。 DataSourceTransactionManager类中的主要方法 doBegin()开启事务doSuspend()挂起事务doResume()恢复挂起的事务doCommit()提交事务doRollback()回滚事务 Transactional注解 Transactional作用就是在当前这个方法执行开始之前来开启事务方法执行完毕之后提交事务。如果在这个方法执行的过程当中出现了异常就会进行事务的回滚操作。 Transactional注解我们一般会在业务层当中来控制事务因为在业务层当中一个业务功能可能会包含多个数据访问的操作。在业务层来控制事务我们就可以将多个数据访问操作控制在一个事务范围内。 事务属性 isolation 【事务隔离级别】 读未提交Read Uncommitted事务可以读取未被提交的数据容易产生脏读、不可重复读和幻读等问题。实现简单但不太安全一般不用。读已提交Read Committed事务只能读取已经提交的数据可以避免脏读问题但可能引发不可重复读和幻读。【推荐设置】可重复读Repeatable Read在一个事务中相同的查询将返回相同的结果集不管其他事务对数据做了什么修改。可以避免脏读和不可重复读但仍有幻读的问题。串行化Serializable最高的隔离级别完全禁止了并发只允许一个事务执行完毕之后才能执行另一个事务。可以避免以上所有问题但效率较低不适用于高并发场景。 rollbackFor【事务异常】 默认情况下只有出现RuntimeException(运行时异常)才会回滚事务。 假如我们想让所有的异常都回滚需要来配置Transactional注解当中的rollbackFor属性通过rollbackFor这个属性可以指定出现何种异常类型回滚事务。 拓展 Spring容器是如何启动的 加载配置文件Spring 容器会从指定的配置文件中读取配置信息包括 bean 的定义、依赖关系、AOP 切面等。 创建容器Spring 容器启动后会创建一个容器实例容器负责管理 bean 的生命周期和依赖关系。 初始化 bean容器会按照指定的顺序依次对 bean 进行初始化包括实例化、属性注入、初始化方法执行等。 设置代理对象如果 bean 需要被 AOP 切面增强则容器会为其创建代理对象。 完成容器初始化所有 bean 初始化完成后Spring 容器启动完成1. Spring是如何解决循环依赖问题的 Spring循环依赖指的是两个或多个Bean之间相互依赖形成一个环状依赖的情况。简单来说就是A依赖BB依赖CC依赖A这样就形成了一个循环依赖的环。 Spring循环依赖通常会导致Bean无法正确地被实例化从而导致应用程序无法正常启动或者出现异常。因此Spring循环依赖是一种需要尽量避免的情况。 Spring循环依赖的解决方法 构造函数注入 在构造函数注入中Spring会检查循环依赖并在发现循环依赖时抛出异常避免死循环。使用Lazy注解 Lazy注解可以延迟Bean的实例化从而避免循环依赖的问题。使用setter方法在构造函数注入中Spring会检查循环依赖并在发现循环依赖时抛出异常避免死循环 Spring 框架中都用到了哪些设计模式 简单工厂模式Spring中的BeanFactory就是简单工厂模式的体现根据传入一个唯一的标识来获得Bean对象。工厂方法模式Spring使用工厂模式通过BeanFactory或ApplicationContext创建bean对象。单例模式Spring中bean的默认作用域就是singleton也就是说Spring容器中的bean默认都是单例的。适配器模式Spring框架的许多地方使用了适配器模式如Spring MVC。代理模式Spring AOP就是基于动态代理的如果要代理的对象实现了某个接口那么Spring AOP会使用JDK Proxy去创建代理对象。
- 上一篇: 个人网站建设的步骤网站icp备案证书
- 下一篇: 个人网站建设方案书实例电脑网游
相关文章
-
个人网站建设的步骤网站icp备案证书
个人网站建设的步骤网站icp备案证书
- 技术栈
- 2026年03月21日
-
个人网站好备案吗营销网址大全
个人网站好备案吗营销网址大全
- 技术栈
- 2026年03月21日
-
个人网站好备案吗卖链接的网站
个人网站好备案吗卖链接的网站
- 技术栈
- 2026年03月21日
-
个人网站建设方案书实例电脑网游
个人网站建设方案书实例电脑网游
- 技术栈
- 2026年03月21日
-
个人网站建设方法wordpress 七牛视频教程
个人网站建设方法wordpress 七牛视频教程
- 技术栈
- 2026年03月21日
-
个人网站建设服务seo权重优化
个人网站建设服务seo权重优化
- 技术栈
- 2026年03月21日






