自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(83)
  • 收藏
  • 关注

原创 学习java第八十二天

这个球模不是预先就定型了,而是由你来给他确定它的形状,既然你可以确定这个球模型的形状,当然他造出来的球肯定就是你想要的球了,这样在这个箱子里你可以发现所有你想要的球。为什么要 Bean 这种角色 Bean 或者为何在 Spring 如此重要,这由 Spring 框架的设计目标决定,Spring 为何如此流行,我们用 Spring 的原因是什么,想想你会发现原来 Spring 解决了一个非常关键的问题他可以让你把对象之间的依赖关系转而用配置文件来管理,也就是他的依赖注入机制。Ioc 容器的扩展点。

2024-05-26 23:18:46 432

原创 学习java第八十一天

byType:过参数类型自动装配,Spring容器在配置文件中发现bean的autowire属性被设置成byType,之后容器试图匹配、装配和该bean的属性具有相同类型的bean。byName:通过参数名 自动装配,Spring容器在配置文件中发现bean的autowire属性被设置成byname,之后容器试图匹配、装配和该bean的属性具有相同名字的bean。constructor:这个方式类似于byType, 但是要提供构造器参数,如果没有确定的带参数的构造器参数类型,将会抛出异常。

2024-05-26 01:24:22 269

原创 学习java第八十天

ClassPathXmlApplicationContext容器也从XML文件加载bean的定义。FileSystemXmlApplicationContext容器从XML文件加载bean的定义。XML bean配置文件的完整路径必须提供给构造函数。WebXmlApplicationContext容器从web应用程序中加载包含所有bean定义的XML文件。Bean类:它包含属性、setter和getter方法、其它方法等等。XML配置文件:包含类的信息以及如何配置它们。接口:定义了一些方法的接口。

2024-05-24 23:55:23 484

原创 学习java第七十九天

7.如果Bean实现了InitializingBean接口,Spring将调用它的afterPropertiesSet方法,然后调用xml定义的 init-method 方法,两个方法作用类似,都是在初始化 bean 的时候执行。10.如果Bean实现了DisposableBean接口,Spring将调用它的destory方法,然后调用在xml中定义的 destory-method方法,这两个方法作用类似,都是在Bean实例销毁前执行。同时,一旦接口增加方法,目标对象与代理对象都要维护。

2024-05-24 00:50:26 532

原创 学习java第七十八天

(1)控制反转是应用于软件工程领域的,在运行时被装配器对象用来绑定耦合对象的一种编程技巧,对象之间的耦合关系在编译时通常是未知的。在传统的编程方式中,业务逻辑的流程是由应用程序中早已被设定好关联关系的对象来决定的。在使用控制反转的情况下,业务逻辑的流程是由对象关系图来决定的,该对象关系图由装配器负责实例化,这种实现方式还可以将对象之间的关联关系的定义抽象化。绑定的过程是通过“依赖注入”实现的。(3)依赖注入是在编译阶段尚未知所需的功能是来自哪个的类的情况下,将其他对象所依赖的功能对象实例化的模式。

2024-05-22 23:55:44 345

原创 学习java第七十七天

依赖注入是spring容器中创建对象时给其设置依赖对象的方式,比如给spring一个清单,清单中列出了需要创建B对象以及其他的一些对象(可能包含了B类型中需要依赖对象),此时spring在创建B对象的时候,会看B对象需要依赖于哪些对象,然后去查找一下清单中有没有包含这些被依赖的对象,如果有就去将其创建好,然后将其传递给B对象;创建spring容器,并给容器指定需要装载的bean配置文件,当spring容器启动之后,会加载这些配置文件,然后创建好配置文件中定义好的bean对象,将这些对象放在容器中以供使用。

2024-05-22 01:40:43 412

原创 学习java第七十六天

同文件下@Bean的会生效,@ComponentScan扫描进来不会生效。通过@ComponentScan扫描进来的优先级是最低的,原因就是它扫描进来的Bean定义是最先被注册的~request : 每一次HTTP请求都会产生一个新的bean,该bean仅在当前HTTP request内有效。singleton : 唯一 bean 实例,Spring 中的 bean 默认都是单例的。不同配置文件中存在同名Bean,后解析的配置文件会覆盖先解析的配置文件。同一个配置文件内同名的Bean,以最上面定义的为准。

2024-05-20 23:14:41 254

原创 学习java第七十五天

AOP,一般称为面向切面,作为面向对象的一种补充,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码,降低了模块间的耦合度,提高系统的可维护性。(2)Spring AOP使用的动态代理,所谓的动态代理就是说AOP框架不会去修改字节码,而是每次运行时在内存中临时为方法生成一个AOP对象,这个AOP对象包含了目标对象的全部方法,并且在特定的切点做了增强处理,并回调原对象的方法。

2024-05-20 00:11:22 308 1

原创 学习java第七十四天

自动装配有哪些方式?Spring 容器能够自动装配 bean。也就是说,可以通过检查 BeanFactory 的内容让 Spring 自动解析 bean 的协作者。自动装配的不同模式:no - 这是默认设置,表示没有自动装配。应使用显式 bean 引用进行装配。byName - 它根据 bean 的名称注入对象依赖项。它匹配并装配其属性与 XML 文件中由相同名称定义的 bean。byType - 它根据类型注入对象依赖项。如果属性的类型与 XML 文件中的一个 bean 名称匹配,则匹配并装配属

2024-05-18 23:57:24 388

原创 学习java第七十三天

Setter方法注入: Setter方法注入是容器通过调用无参构造器或无参static工厂 方法实例化bean之后,调用该bean的setter方法,即实现了基于setter的依赖注入。request:每次http请求都会创建一个bean,该作用域仅在基于web的Spring ApplicationContext情形下有效。构造器依赖注入: 构造器依赖注入通过容器触发一个类的构造器来实现的,该类有一系列参数,每个参数代表一个对其他类的依赖。解释Spring支持的几种bean的作用域。

2024-05-17 23:42:04 230

原创 学习java第七十二天

提供一种方法处理文本消息,一个通常的做法是加载文件资源(比如镜像),它们可以向注册为监听器的bean发布事件。另外,在容器或容器内的对象上执行的那些不得不由bean工厂以程序化方式处理的操作,可以在Application contexts中以声明的方式处理。Application contexts实现了MessageSource接口,该接口的实现以可插拔的方式提供获取本地化消息的方法。:ApplicationContext是Spring应用程序中的核心接口,用于向应用程序提供配置信息。

2024-05-16 23:10:23 328

原创 学习java第七十一天

依赖注入是spring容器中创建对象时给其设置依赖对象的方式,比如给spring一个清单,清单中列出了需要创建B对象以及其他的一些对象(可能包含了B类型中需要依赖对象),此时spring在创建B对象的时候,会看B对象需要依赖于哪些对象,然后去查找一下清单中有没有包含这些被依赖的对象,如果有就去将其创建好,然后将其传递给B对象;自动装配注解(Autowired):通过在需要自动装配的字段、构造函数或方法上使用@Autowired注解,Spring容器会自动将相应的依赖注入到标注了@Autowired的位置。

2024-05-15 22:52:10 286

原创 学习java第七十天

PROPAGATION_REQUIRED:如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置。、PROPAGATION_SUPPORTS:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就以非事务执行。、PROPAGATION_MANDATORY:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就抛出异常。、PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

2024-05-14 23:30:01 300

原创 学习java第六十九天

Bean就是普通的java对象,和我们自己new的对象其实是一样的,只是这些对象是由spring去创建和管理的,我们需要在配置文件中告诉spring容器需要创建哪些bean对象,所以需要先在配置文件中定义好需要创建的bean对象,这些配置统称为bean定义配置元数据信息,spring容器通过读取这些bean配置元数据信息来构建和组装我们需要的对象。但可能会出现幻读的问题。事务读取的数据是其他事务已经提交的数据,避免了脏读的问题。:最高的隔离级别,保证事务串行执行,避免了脏读、不可重复读和幻读的问题。

2024-05-13 23:54:06 234

原创 学习java第六十八天

request:每一次HTTP请求都会产生一个新的bean,该bean仅在当前HTTP request内有效。、session:每一次HTTP请求都会产生一个新的bean,该bean仅在当前HTTP session内有效。在AOP术语中,切面的工作被称为通知。环绕通知(Around):通知包裹了被通知的方法,在被通知的方法调用之前和调用之后执行自定义的逻辑。后置通知(After):在目标方法完成之后调用通知,此时不会关心方法的输出是什么;前置通知(Before):在目标方法被调用之前调用通知功能;

2024-05-12 23:32:13 314

原创 学习java第六十七天

Autowired:根据类型进行注入,如果匹配到多个Bean,则会爆出异常。Spring AOP 和 AspectJ 都是AOP的具体实现。AspectJ是完全实现了 AOP,功能比 Spring AOP 要强。@Resource:首先根据名称注入,如果找不到,再根据类型进行查找。AspectJ不仅可以织入方法执行,还可以字段赋值时,构造函数执行时等。Spring AOP中使用了 AspectJ 的切点表达式,注解(通知类型)等。Spring AOP 是在运行时动态生成的,所以性能不如AspectJ高。

2024-05-11 22:44:04 420

原创 学习java第六十六天

global-session: 全局session作用域,仅仅在基于portlet的web应用中才有意义,Spring5已经没有了。session : :在一个HTTP Session中,一个Bean定义对应一个实例。request : 每一次HTTP请求都会产生一个新的bean,该bean仅在当前HTTP request内有效。singleton : 唯一 bean 实例,Spring 中的 bean 默认都是单例的。@Service : 对应服务层,主要涉及一些复杂的逻辑,需要用到 Dao层。

2024-05-11 01:23:39 515

原创 学习java第六十五天

(2)上下文开始事件(ContextStartedEvent):当容器调用ConfigurableApplicationContext的Start()方法开始/重新开始容器时触发该事件。(3)上下文停止事件(ContextStoppedEvent):当容器调用ConfigurableApplicationContext的Stop()方法停止容器时触发该事件。(4)上下文关闭事件(ContextClosedEvent):当ApplicationContext被关闭时触发该事件。

2024-05-10 01:06:38 360

原创 学习java第六十五天

扩展点:org.springframework.beans.factory.config.BeanPostProcessor接口中的postProcessBeforeInitialization(Object bean, String beanName)方法,可以在所有Bean初始化前执行自定义逻辑。当两个或多个单例Bean互相依赖时,Spring容器首先会尝试从缓存中获取Bean的早期引用或者工厂对象,如果能够获取到,则可以继续进行依赖注入,从而避免死锁和栈溢出等问题。销毁(Destruction)

2024-05-09 01:11:53 358

原创 学习java第六十四天

若当前存在事务,则新建一个事务,新老事务相互独立。PROPAGATION_REQUIRED:默认的Spring事物传播级别,若当前存在事务,则加入该事务,若不存在事务,则新建一个事务。PROPAGATION_NOT_SUPPORTED:以非事务的方式执行,若当前存在事务,则把当前事务挂起。PROPAGATION_SUPPORTS:支持当前事务,若当前不存在事务,以非事务的方式执行。PROPAGATION_NEVER:以非事务的方式执行,如果当前存在事务,则抛出异常。应使用显式 bean 引用进行装配。

2024-05-08 01:26:41 255

原创 学习java第六十三天

如果你想要声明让所有的portlet公用全局的存储变量的话,那么全局变量需要存储在global-session中。:在请求bean范围内为每一个来自客户端的网络请求创建一个实例,在请求完毕后,bean会失效并被垃圾回收器回收;:这种bean范围是默认的,这种范围确保不管接受多少请求,每个容器中只有一个bean的实例,单例模式;(2)通过setter方法进行依赖注入且是在多例(原型)模式下产生的循环依赖问题。(3)通过setter方法进行依赖注入且是在单例模式下产生的循环依赖问题。的作用域之间有什么区别?

2024-05-07 00:45:03 282

原创 学习java第六十二天

通知是个在方法执行前或执行后要做的动作,实际上是程序执行时要通过 SpringAOP 框架触发的代码段。after-returning: 仅当方法成功完成后执行的通知。after-throwing: 在方法抛出异常退出时执行的通知。after: 在方法执行之后调用的通知,无论方法执行是否成功。before:前置通知,在一个方法执行前被调用。around: 在方法执行之前和之后调用的通知。Spring 的通知是什么?编程式事务,在代码中硬编码。①基于XML的声明式事务。②基于注解的声明式事务。

2024-05-06 01:12:08 507 1

原创 学习java第六十一天

IOC:就是对象之间的依赖关系由容器来创建,对象之间的关系本来是由我们开发者自己创建和维护的,在我们使用Spring框架后,对象之间的关系由容器来创建和维护,将开发者做的事让容器做,这就是控制反转。控制反转是目标,依赖注入是我们实现控制反转的一种手段。request:在请求bean范围内为每一个来自客户端的网络请求创建一个实例,在请求完毕后,bean会失效并被垃圾回收器回收;singleton:这种bean范围是默认的,这种范围确保不管接受多少请求,每个容器中只有一个bean的实例,单例模式;

2024-05-05 01:27:47 526 1

原创 学习java第六十天

(1)BeanFactory是Spring里面最底层的接口,是IoC的核心,定义了IoC的基本功能,包含了各种Bean的定义、加载、实例化,依赖注入和生命周期管理。(3)环绕通知(Around Advice):包围一个连接点的通知,这是最强大的一种通知类型。(4)返回后通知(AfterReturning Advice):在连接点正常完成后执行的通知(如果连接点抛出异常,则不执行)(2)后置通知(After Advice):当连接点退出的时候执行的通知(不论是正常返回还是异常退出)。

2024-05-04 00:59:13 411

原创 学习java第五十九天

依赖注入是spring容器中创建对象时给其设置依赖对象的方式,比如给spring一个清单,清单中列出了需要创建B对象以及其他的一些对象(可能包含了B类型中需要依赖对象),此时spring在创建B对象的时候,会看B对象需要依赖于哪些对象,然后去查找一下清单中有没有包含这些被依赖的对象,如果有就去将其创建好,然后将其传递给B对象;创建spring容器,并给容器指定需要装载的bean配置文件,当spring容器启动之后,会加载这些配置文件,然后创建好配置文件中定义好的bean对象,将这些对象放在容器中以供使用。

2024-05-03 01:13:23 492

原创 学习java第五十八天

其特点是,spring 在使用 getBean() 调用获得该 bean 时,会自动调用该 bean 的 getObject() 方法,所以返回的不是 factory 这个 bean,而是这个 bean.getOjbect()方法的返回值。观察者模式:Spring 中的 Event 和 Listener。模板模式:Spring 中的 org.springframework.jdbc.core.JdbcTemplate 就是非常经典的模板模式的应用,里面的 execute 方法,把整个算法步骤都定义好了。

2024-05-02 01:31:20 604

原创 学习java第五十七天

ApplicationContext接口作为BeanFactory的派生,除了提供BeanFactory所具有的功能外,还提供了更完整的框架功能:比如说继承MessageSource,因此支持国际化、统一的资源文件访问方式、提供在监听器中注册bean的事件、同时加载多个配置文件、载入多个(有继承关系)上下文 ,使得每一个上下文都专注于一个特定的层次,比如应用的web层。容器全权负责组件的装配,它会把符合依赖关系的对象通过属性(JavaBean中的setter)或者是构造器传递给需要的对象。

2024-05-01 01:00:14 408

原创 学习java第五十六天

单例bean的初始化以及依赖注入一般都在容器初始化阶段进行,只有懒加载(lazy-init为true)的单例bean是在应用第一次调用getBean()时进行初始化和依赖注入。(6)目标对象(Target Object): 被一个或者多个切面(aspect)所通知(advise)的对象。它通常是一个代理对象。(7)织入(Weaving):织入是把切面应用到目标对象并创建新的代理对象的过程。(1)切面(Aspect):切面是通知和切点的结合。(3)通知(Advice):在AOP术语中,切面的工作被称为通知。

2024-04-29 23:20:28 290

原创 学习java第五十五天

JDBC 异常 - Spring 的 JDBC 抽象层提供了一个异常层次结构,简化了错误处理策略。事务管理 - 提供了用于事务管理的通用抽象层。Bean 类 - 它包含属性,setter 和 getter 方法,函数等。MVC - 对 web 应用提供了高度可配置性,其他框架的集成也十分方便。AOP - 面向切面编程可以将应用业务逻辑和系统服务分离,以实现高内聚。容器 - Spring 负责创建和管理对象(Bean)的生命周期和配置。Spring 面向切面编程(AOP) - 提供面向切面编程的功能。

2024-04-29 00:40:39 259

原创 学习java第五十四天

重写: 你仍需用 <constructor-arg>和 <property> 配置来定义依赖,意味着总要重写自动装配。用 Spring 的 SessionFactory 调用 LocalSessionFactory。基本数据类型:你不能自动装配简单的属性,如基本数据类型,String 字符串,和类。模糊特性:自动装配不如显式装配精确,如果有可能,建议使用显式装配。配置 the Hibernate SessionFactory。在 AOP 支持的事务中装配。

2024-04-28 00:55:17 219 1

原创 学习java第五十三天

是Spring里面最底层的接口,是IoC的核心,定义了IoC的基本功能,包含了各种Bean的定义、加载、实例化,依赖注入和生命周期管理。载入多个(有继承关系)上下文(即同时加载多个配置文件) ,使得每一个上下文都专注于一个特定的层次,比如应用的web层。:在请求bean范围内为每一个来自客户端的网络请求创建一个实例,在请求完毕后,bean会失效并被垃圾回收器回收;:这种bean范围是默认的,这种范围确保不管接受多少请求,每个容器中只有一个bean的实例,单例模式;提供在监听器中注册bean的事件。

2024-04-27 00:12:37 496

原创 学习java第五十二天

代理类根据目标类实现的接口动态生成,不需要自己编写,生成的动态代理类和目标类都实现相同的接口。CGLIB(Code Generation Library)可以在运行时动态生成类的字节码,动态创建目标类的子类对象,在子类对象中增强目标类。当目标类实现了接口的时候Spring Aop默认使用jdk动态代理方式来增强方法,没有实现接口的时候使用cglib动态代理方式增强方法。是通过继承的方式做的动态代理,因此如果某个类被标记为final,那么它是无法使用CGLIB做动态代理的。缺点:目标类必须有实现的接口。

2024-04-25 23:53:28 480

原创 学习java第五十一天

byType::通过参数类型自动装配,Spring 容器在配置文件中发现 bean 的 autowi 《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》开源 re 属性被设置成 byType,之后容器试图匹配、装配和该 bean 的属性具有相同类型的 bean。byName:通过参数名 自动装配,Spring 容器在配置文件中发现 bean 的 autowire 属性被设置成 byname,之后容器试图匹配、装配和该 bean 的属性具有相同名字的 bean。

2024-04-24 23:52:54 459 1

原创 学习java第五十天

初始化:在这个阶段中,Spring容器调用Bean的初始化方法(如果有的话),并对Bean的属性进行设置。这个阶段中,Spring容器会检查是否实现了某些特定的接口,如InitializingBean和BeanPostProcessor,并相应地调用相关方法。销毁:在这个阶段中,Spring容器会检查Bean是否实现了某些特定的接口,如DisposableBean,并相应地调用相关方法来销毁Bean实例。实例化:在这个阶段中,Spring容器根据Bean的定义,通过反射或其他方法来创建Bean的实例。

2024-04-23 23:58:26 300

原创 学习java第四十九天

IOC:就是对象之间的依赖关系由容器来创建,对象之间的关系本来是由我们开发者自己创建和维护的,在我们使用Spring框架后,对象之间的关系由容器来创建和维护,将开发者做的事让容器做,这就是控制反转。Context模块提供框架式的Bean的访问方式,其它程序可以通过Context访问Spring的Bean资源,相当于资源注入。Apring AOP模块是Spring的AOP库,提供了AOP(拦截器)机制,并提供常见的拦截器,供用户自定义和配置。控制反转是目标,依赖注入是我们实现控制反转的一种手段。

2024-04-22 23:55:59 199

原创 学习java第四十八天

Spring Context是Spring框架的核心模块之一,它提供了IoC容器的实现,以及许多其他功能,如事件处理、国际化等。IoC容器是Spring框架的核心组件,它负责管理应用程序中的对象及其依赖关系。通过配置文件或注解的方式,开发者可以定义对象之间的关系和依赖,然后由IoC容器负责创建和组装这些对象。这种方式降低了组件之间的耦合度,提高了代码的可维护性和可扩展性。Spring应用程序通常由多个组件组成,每个组件都负责完成特定的功能。Service:业务逻辑处理组件,负责实现具体的业务功能。

2024-04-19 23:57:07 70

原创 学习java第四十七天

动态代理:代理类在程序运行时创建,AOP框架不会去修改字节码,而是在内存中临时生成一个代理对象,在运行期间对业务方法进行增强,不会生成新类。缺点:代理对象需要与目标对象实现一样的接口,并且实现接口的方***有冗余代码。同时,一旦接口增加方法,目标对象与代理对象都要维护。静态代理:代理类在编译阶段生成,在编译阶段将通知织入Java字节码中,也称编译时增强。AspectJ使用的是静态代理。支持面向切面的编程,并且把应用业务逻辑和系统服务分开。AOP有两种实现方式:静态代理和动态代理。轻量,基本版本大约2MB。

2024-04-19 00:00:31 222

原创 学习java第四十六天

在Spring容器启动的时候会执行 BeanDefinitionRegistryPostProcessor 的 postProcessBeanDefinitionRegistry 方法,就是等beanDefinition加载完毕之后,对beanDefinition进行后置处理,可以在此进行调整IOC容器中的beanDefinition,从而干扰到后面进行初始化bean。可以从单调繁冗的事务管理代码中解脱出来,通过声明式方式灵活地进行事务的管理,提高开发效率和质量。通过切面和模板减少样板式代码。

2024-04-17 23:58:31 429

原创 学习java第四十五天

上下文开始事件(ContextStartedEvent):当容器调用ConfigurableApplicationContext的Start()方法开始/重新开始容器时触发该事件。上下文停止事件(ContextStoppedEvent):当容器调用ConfigurableApplicationContext的Stop()方法停止容器时触发该事件。上下文关闭事件(ContextClosedEvent):当ApplicationContext被关闭时触发该事件。容器被关闭时,其管理的所有单例Bean都被销毁。

2024-04-16 23:57:54 417

原创 学习java第四十四天

接口对BeanFactory(是一个子接口)进行了扩展,在BeanFactory的基础上添加了其他功能,比如与Spring的AOP更容易集成,也提供了处理message resource的机制(用于国际化)、事件传播以及应用层的特别配置,比如针对Web应用的WebApplicationContext。接口是 Spring 资源访问策略的抽象,它本身并不提供任何资源访问实现,具体的资源访问由该接口的实现类完成——每个实现类代表一种资源访问策略。接口提供了一个先进的配置机制,使得任何类型的对象的配置成为可能。

2024-04-15 23:58:25 324

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除