网站关键词从哪改,wordpress定制首页,wordpress图片下载主题,怎么建设一个网站赚钱1.什么是Spring框架#xff1f; Spring是一种轻量级框架#xff0c;旨在提高开发人员的开发效率以及系统的可维护性。 我们一般说的Spring框架就是Spring Framework,它是很多模块的集合#xff0c;使用这些模块可以很方便的协助我们进行开发。这些模块是核心容器、数据访…1.什么是Spring框架 Spring是一种轻量级框架旨在提高开发人员的开发效率以及系统的可维护性。 我们一般说的Spring框架就是Spring Framework,它是很多模块的集合使用这些模块可以很方便的协助我们进行开发。这些模块是核心容器、数据访问/集成、web、aop(面向切面编程、工具、消息和测试模块。比如core container中的core组件是Spring所有组件的核心beans组件和context组件是实现IOC和DI的基础AOP组件用来实现面向切面编程。 Spring官网列出的Spring的六个特征 核心技术依赖注入DI、AOP、事件Events)、资源、i18n、验证、数据绑定、类型转换、SPEL。 测试模拟对象、TestContext框架、Spring MVC测试、WebTestClient。 数据访问事务、DAO支持、JDBC、ORM、编组XML。
Web支持Spring MVC 和Spring Web Flux Web框架。
集成远程处理、JMS、JCA、JMX、电子邮件、任务、调度、缓存。
语言Kotlin,Groovy,动态语言。
2.列举一些重要的Spring模块
下面对应的是Spring 4.X的版本目前最新的5.X版本中Web模块的Portlet组件已经被废弃掉同时增加了用于异常响应的Web Flux组件。 Spring Core基础可以说Spring其他所有的功能都依赖于该类库。主要提供IOC和DI功能。 Spring Aspects:该模块为与Aspects的集成提供支持。 Spring AOP面向切面编程。 Spring JDBCJava数据库连接。
Spring JMSJava消息服务。 Spring ORM用于支持Hibernate等ORM工具。
Spring Web为创建Web应用程序提供支持。
Spring Test提供了对Junit和TestNG测试的支持。 3.什么事IOC如何实现的
IOC(控制反转是一种设计思想就是将本来在程序中手动创建对象的控制权交给IOC容器来管理并由IOC容器完成对象的注入。这样可以很大程度上简化应用的开发把应用从复杂的依赖关系中解放出来。IOC容器就像是一个工厂一样当我们需要创建一个对象的时候只需要配置好配置文件/注解即可完全不用考虑对象是如何创建出来的。
Spring 中的 IOC的实现原理就是工厂模式加反射机制。
4.Spring AOP和AspectJ AOP 有什么区别 Spring AOP 是属于运行时增强而AspectJ是编译时增强。Spring Aop 基于代理而AspectJ基于字节码操作。 Spring AOP 已经集成了Aspect J Aspect J 应该算得上是Java 生态系统中最完整的AOP框架了。Aspect J相比于Spring AOP功能更加强大但是Spring AOP相对来说更简单。
如果我们的切面比较少那么两者性能差异不大。但是当切面太多的话最好选择Aspect J ,它比Spring AOP快很多。
5.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中已经没有了。
6.Spring 中的单例bean的线程安全问题了解吗 大部分时候我们并没有在系统中使用多线程所以很少有人会关注这个问题。单例bean存在线程问题主要是因为当多个线程操作同一个对象的时候对这个对象的非静态成员变量的写操作会存在线程安全问题。 有两种常见的解决方案
1.在bean对象中尽量避免定义可变的成员变量不太现实。
2.在类中定义一个ThreadLocal成员变量将需要的可变成员变量保存在TheadLocal中推荐的一种方式。
7.Spring中的bean生命周期 bean的完整生命周期经历了各种方法调用这些方法可以划分为以下几类 bean自身的方法这个包括类Bean本身调用的方法和通过配置文件中bean的初始化方法和销毁方法指定的方法。
bean 级生命周期接口方法这个包括了BeanNameAware,BeanFactoryAware,ApplicationContextAware,
当然也包括initializingBean和DisposableBean这些接口的方法可以被PostConstructe和PreDestroy注解替代
容器级生命周期接口方法这个包括类InstantiationAwareBeanPostProcessor和BeanPostProcessor这两个接口实现一般称它们的实现类为后处理器。
工厂后处理器接口方法
这个包括了AspectJWeavingEnabler,ConfigurationClassPostProcessor,
CustomAutowireCofigure等等非常有用的工厂后处理器接口的方法。工厂后处理器也是容器级别的。在应用上下文装配配置文件之后立即调用。
具体而言流程如下
1.如果BeanFactoryPostProcessor和Bean 关联则调用postProcessBeanFactory方法即首先尝试从bean工厂中获取bean)。
2.如果InstantiationAwareBeanPostProcessor和Bean关联则调用postProcessBeforeInstantiation方法。
3.根据配置情况调用Bean构造方法实例化Bean。
4.利用依赖注入完成Bean中所有属性值的配置注入。
5.如果InstantiationAwareBeanPostProcessor和Bean关联则调用postProcessAfterInstantiation方法和post ProcessProperties.
调用xxAware接口
第一类Aware接口
如果Bean实现了BeanNameAware接口则Spring调用Bean的set BeanName方法传入当前Bean的ID值。
如果Bean实现了BeanFactoryAware接口则Spring调用set BeanFactory()方法传入当前工厂实例的引用。
第二类Aware接口 如果Bean实现了EnvironmentAware接口则Spring调用setEnvironment方法传入当前Environment实例的引用。 如果Bean实现了EmbeddedValueResolverAware接口则Spring调用setEmbeddedValueResolver()方法传入当前StringValueResolver实例的引用。 如果Bean实现了ApplicationContextAware接口则Spring调用setApplicationContext方法传入当前的ApplicationContext实例的引用。
6.如果BeanPostProcessor和Bean关联则Spring将调用该接口的预初始化方法。
postProcessBeforeInititiazation()对bean进行加工操作此处非常重要Spring 的Aop就是利用它实现的。
7.如果Bean实现了initializingBean接口则Spring将调用afterPropertiesSet方法。或者执行PostConstruct注解的方法
8.如果在配置文件中通过init method属性指定了初始化方法则调用该初始化方法。
9.如果BeanPostProcessor和Bean关联则Spring将调用该接口的初始化方法。
postProcessAfterInitialization().此时Bean已经可以被应用系统使用了。
10如果在bean中指定了该Bean的作用范围为scope“singleton”则将该Bean放入SpringIoc的缓存池中将触发Spring对该Bean的生命周期管理如果在bean中指定了该Bean的作用范围为scope“prototype”则将该Bean交给调用者调用者管理该Bean的生命周期Spring不再管理该Bean。
11.如果Bean实现了DisposableBean接口则Spring会调用destroy方法将Spring中的Bean销毁或者有执行PreDestroy注解的方法
如果在配置文件中通过destroy method属性指定了Bean的销毁方法则Spring将调用该方法对Bean进行销毁。