03
2020
08

使用spring事件的好处?

1、单一职责原则、代码耦合降低、事件的处理人员只需关注处理的代码、发布人员只需关注发布的代码;2、即可同步 也可异步;
03
2020
08

请解释一下spring中的IOC?

spring中的IoC容器是由spring的 org.springframework.beans 包和 org.springframework.context 包构成的。BeanFactory 接口提供了一个先进的配置机制,使得任何类型的对象的配置成为可能。ApplicationContex 接口对 BeanFactory(是一个子接口)进行了扩展,在 BeanFactory的基础上添加了其他功能,比如与 Spring 的 AOP 更容易集成,也提供了处理 message resource的机制
03
2020
08

什么是IOC?什么是DI?

控制反转是一种思想,将对象的创建、注入、销毁交给spring容器帮我们去做,就是把对象的控制权交给了springIOC容器,开发人员不必去考虑如何进行依赖的注入,而使得代码维护更加容易。不至于出现一处属性的修改,而导致的“牵一发而动全身”。依赖注入是IOC的实现方式,即一个类内部的依赖不再由类内部创建,而在类外部进行创建并进行注入。这就是springIOC思想的具体实现。在 Java 中依赖注入有以下三种实现方式:构造器注入Setter 方法注入接口注入
06
2020
05

Bean 工厂和 Application contexts 有什么区别?

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

什么是Spring框架?

Spring是一种轻量级框架,旨在提高开发人员的开发效率以及系统的可维护性。我们一般说的Spring框架就是Spring Framework,它是很多模块的集合,使用这些模块可以很方便地协助我们进行开发。这些模块是核心容器、数据访问/集成、Web、AOP(面向切面编程)、工具、消息和测试模块。比如Core Container中的Core组件是Spring所有组件的核心,Beans组件和Context组件是实现IOC和DI的基础,AOP组件用来实现面向切面编程。Spring官网(https://s
06
2020
05

列举一些重要的Spring模块?

下图对应的是Spring 4.x的版本,目前最新的5.x版本中Web模块的Portlet组件已经被废弃掉,同时增加了用于异步响应式处理的WebFlux组件。Spring Core:基础,可以说Spring其他所有的功能都依赖于该类库。主要提供IOC和DI功能。Spring Aspects:该模块为与AspectJ的集成提供支持。Spring AOP:提供面向方面的编程实现。Spring JDBC:Java数据库连接。Spring JMS:Java消息服务。Spring ORM:用于支持Hiber
06
2020
05

谈谈自己对于Spring IOC和AOP的理解

IOCIOC(Inversion Of Controll,控制反转)是一种设计思想,就是将原本在程序中手动创建对象的控制权,交由给Spring框架来管理。IOC在其他语言中也有应用,并非Spring特有。IOC容器是Spring用来实现IOC的载体,IOC容器实际上就是一个Map(key, value),Map中存放的是各种对象。将对象之间的相互依赖关系交给IOC容器来管理,并由IOC容器完成对象的注入。这样可以很大程度上简化应用的开发,把应用从复杂的依赖关系中解放出来。IOC容器就像是一个工厂
06
2020
05

Spring中的单例bean的线程安全问题了解吗?

大部分时候我们并没有在系统中使用多线程,所以很少有人会关注这个问题。单例bean存在线程问题,主要是因为当多个线程操作同一个对象的时候,对这个对象的非静态成员变量的写操作会存在线程安全问题。有两种常见的解决方案:1.在bean对象中尽量避免定义可变的成员变量(不太现实)。2.在类中定义一个ThreadLocal成员变量,将需要的可变成员变量保存在ThreadLocal中(推荐的一种方式)。
06
2020
05

Spring中的bean的作用域有哪些?

1.singleton:唯一bean实例,Spring中的bean默认都是单例的。2.prototype:每次请求都会创建一个新的bean实例。3.request:每一次HTTP请求都会产生一个新的bean,该bean仅在当前HTTP request内有效。4.session:每一次HTTP请求都会产生一个新的bean,该bean仅在当前HTTP session内有效。5.global-session:全局session作用域,仅仅在基于Portlet的Web应用中才有意义,Spring5中已经
06
2020
05

Spring AOP和AspectJ AOP有什么区别?

Spring AOP是属于运行时增强,而AspectJ是编译时增强。Spring AOP基于代理(Proxying),而AspectJ基于字节码操作(Bytecode Manipulation)。Spring AOP已经集成了AspectJ,AspectJ应该算得上是Java生态系统中最完整的AOP框架了。AspectJ相比于Spring AOP功能更加强大,但是Spring AOP相对来说更简单。如果我们的切面比较少,那么两者性能差异不大。但是,当切面太多的话,最好选择AspectJ,它比Sp