
spring
lzkkang
这个作者很懒,什么都没留下…
展开
-
解释不同方式的自动装配
**no方式:**是默认的方式,不进行自动装配,通过显式设置 ref 属性来进行装配。**byName方式:**是通过参数名自动装配,Spring 容器在配置文件中发现 bean 的 autowire 属性被设置成 byname之后,容器试图匹配、装配和该 bean 的属性具有相同名字的 bean。byType方式: 是通过参数类型自动装配,Spring 容器在配置文件中发现 bean 的 autowire 属性被设置成 byType之后,容器试图匹配、装配和该 bean 的属性具有相同类型的 bean原创 2022-04-05 19:00:07 · 514 阅读 · 0 评论 -
Application通常的实现方式是什么
FileSystemXmlApplication容器**😗*此容器在XML文件中加载bean定义,XML bean配置文件的全路径类名必须提供给它的构造函数**ClassPathXmlApplication容器:**此容器从XML文件中加载bean定义,需要正确的配置classPath,因为这个容器是从classPath加载配置文件**AnnotationConfigApplicationContext容器:**用于读取注解创建容器*** 核心容器的两个接口引发出的问题**ApplicationC原创 2022-04-05 18:59:18 · 258 阅读 · 0 评论 -
注解的原理
1)什么是注解: Java 注解就是代码中的一些特殊标记(元信息),用于在编译、类加载、运行时进行解析和使用,并执行相应的处理。它本质是继承了 Annotation 的特殊接口,其具体实现类是 JDK 动态代理生成的代理类,通过反射获取注解时,返回的也是 Java 运行时生成的动态代理对象 $Proxy1。通过代理对象调用自定义注解的方法,会最终调用 AnnotationInvocationHandler 的 invoke 方法,该方法会从 memberValues 这个Map中查询出对应的值,而原创 2022-04-03 16:21:05 · 1236 阅读 · 0 评论 -
Spring 框架中都用到了哪些设计模式?
1、工厂模式Spring使用工厂模式可以通过 BeanFactory 或 ApplicationContext 创建 bean 对象。2、单例设计模式在我们的系统中,有一些对象其实我们只需要一个,比如说:线程池、缓存、对话框、注册表、日志对象、充当打印机、显卡等设备驱动程序的对象。事实上,这一类对象只能有一个实例,如果制造出多个实例就可能会导致一些问题的产生,比如:程序的行为异常、资源使用过量、或者不一致性的结果。使用单例模式的好处:对于频繁使用的对象,可以省略创建对象所花费的时间,这对于那些重量原创 2022-04-03 15:52:42 · 665 阅读 · 0 评论 -
Spring事务的实现方式和实现原理
Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。Spring只提供统一事务管理接口,具体实现都是由各数据库自己实现,数据库事务的提交和回滚是通过 redo log 和 undo log实现的。Spring会在事务开始时,根据当前环境中设置的隔离级别,调整数据库隔离级别,由此保持一致。@Transactional 注解的关键属性大致有九个参数 意义isolation 事务隔离级别,默认为DEFAULTpropagation 事务传播机制,默认为原创 2022-04-03 15:24:36 · 2548 阅读 · 0 评论 -
Spring框架中的Bean是线程安全的么?如果线程不安全,那么如何处理
Spring容器本身并没有提供Bean的线程安全策略,因此可以说Spring容器中的Bean本身不具备线程安全的特性,但是具体情况还是要结合Bean的作用域来讨论。(1)对于prototype作用域的Bean,每次都创建一个新对象,也就是线程之间不存在Bean共享,因此不会有线程安全问题。(2)对于singleton作用域的Bean,所有的线程都共享一个单例实例的Bean,因此是存在线程安全问题的。但是如果单例Bean是一个无状态Bean,也就是线程中的操作不会对Bean的成员执行查询以外的操作,那么这原创 2022-04-03 15:04:55 · 879 阅读 · 0 评论 -
IOC加载过程
sprig启动流程,个人学习用原创 2022-03-22 12:50:14 · 689 阅读 · 0 评论 -
Bean的生命周期过程
一、 Spring是什么?Spring是一个轻量级的java开发框架,它是为了解决企业应用开发的复杂性而创建的,spring的核心是控制反转(IOC)和面向切面编程(AOP),Spring的主要作用就是为代码解耦,降低代码间的耦合度,让对象和对象直接关系不是使用代码关联,而是通过配置来说明,即在spring中说明对象的关系,使用ico降低业务对象之间耦合度,使得主业务在相互调用过程中,不用在自己维护关系了,即不用再自己创建要使用的对象了,而是spring容器统一管理,自动注入;而AOP使得系统服务得到了最原创 2022-04-03 01:20:19 · 432 阅读 · 0 评论 -
spring注入方式
接口注入:一个类依赖另一个接口都实现,先在配置文件中设定都实现类都类名,动态加载实现类,并通过接口强制转型后为class类所用Setter注入:Setter注入模式使用比较多,它更加直观,被注入的属性需要有set方法,setter注入时在bean实例创建完成之后执行Setter注入可以注入简单值和map、set、list、数组,简单值注入使用<property>的value属性构造器注入:构造器注入,也就是通过构造方法注入依赖,构造函数的参数一般情况下就是依赖项,spring容器会根据bean中原创 2022-04-03 09:28:39 · 4623 阅读 · 0 评论 -
sporing循环问题
sporing循环问题一、构造器的循环依赖A有参构造创建要依赖B有参构造,B有参构造创建要依赖A有参构造,这样就产生了循环依赖的问题,这个没办法解决,只能不要写二、Setter循环依赖:1、通过构造函数创建了A对象(A对象是半成品,还没注入属性和调用init方法)2、将半成品A对象封装成工厂对象存入三级缓存3、A对象需要注入B对象,发现缓存里还没有B对象,开始创建B对象4、通过构造函数创建B对象(B对象 半成品,还没有注入属性和调用init方法)同样在三级缓存中存已经创建的B工厂对象5、B对原创 2022-04-03 09:57:53 · 377 阅读 · 0 评论 -
SpringAOP
为什么要使用AOP:AOP面向切面编程其实是OOP面向对象编程的补充和完善,OOP是引入封装、继承和多态的概念建立的一种对象层次结构,用来模拟公共行为的一个集合。如果我们想要分散的对象引入公行为的时候,OOP就很吃力,比如日志功能,这个功能往往散布在各处的对象层次中,这种无关的代码会导致大量代码的重复,不利于各个模块的重用,AOP 就是可以解决这样的问题,它使用了一种横切的技术,将那些与业务无关,却为业务模块所共有等调用的逻辑封装起来,便于减少系统的重复代码,减低模块之间的耦合度,并有利于未来的可操作性和可原创 2022-04-03 13:52:10 · 372 阅读 · 0 评论 -
什么是IOC
IOC:控制反转原来我们使用的时候对象是由使用者控制的,有了Spring之后,可以将整个对象交给容器来帮我们进行管理DI: 依赖注入,将对于的属性注入到具体的对象中,实现依赖注入的方式有接口注入,setter注入,构造器注入通过populateBean完成属性注入容器:存储对象,使用map结构存储对象,在spring存储对象的时候一般有三级缓存,singletonObjects存放完成对象earlySingletonObjects存放半成品对象,singletonFactory用来存放lambad原创 2022-04-03 14:38:22 · 276 阅读 · 0 评论