Spring15问
spring框架的15个经典问题
super_crazy123
算法,数据结构,多线程,JVM,设计模式,这些是内功,练好内功,其他的外在形式学起来就简单多了。
展开
-
Spring的bean有线程安全问题吗?
spring中bean本身不存在线程安全问题,要看具体使用情况,当bean的作用域是prototype时,每次获取bean都是创建一个新的实例,因此不存在线程安全问题。当bean的作用域是singleton时,不同线程访问同一个bean,如果这个bean中存在实例变量,并且线程有对实例变量的写操作,那么也会产生线程安全问题解决线程安全问题的一般方法时使用threadlocal,为每个线程创建独立的变量副本,互相隔离不影响。ps,线程安全问题是指,多个线程操作共享数据时,会产生最终结果与预期不一致原创 2021-04-13 21:18:33 · 1096 阅读 · 0 评论 -
Bean的生命周期是怎么样的?Bean的作用域是怎样的?
简单来说,Spring Bean的生命周期只有四个阶段:实例化 Instantiation--> 属性赋值 Populate -->初始化 Initialization --> 销毁 Destruction。具体来说分为以下步骤:1.当容器启动时,Bean的实例化。Bean容器找到配置文件中Spring Bean的定义。Bean容器利用Java Reflection API创建一个Bean的实例。2.Bean的属性赋值。利用set()方法设置一些属性值。3.如果实现...原创 2021-04-12 13:37:33 · 211 阅读 · 0 评论 -
BeanFactory和ApplicationContext有什么区别?
BeanFactory和ApplicationContext是Spring的两大核心接口,都可以当做Spring的容器。BeanFactory是Spring里面最底层的接口,提供了最基本的依赖注入支持,ApplicationContext接口作为BeanFactory的子类,还提供了更完整的框架功能。这些功能包括:1、ApplicationContext扩展了MessageSource接口,因此支持国际化。2、ApplicationContext扩展了ResourceLoader(资源加载器)接口原创 2021-04-08 18:33:03 · 221 阅读 · 0 评论 -
Spring容器的启动流程
1、spring容器的初始化:实例化BeanFactory【DefaultListableBeanFactory】工厂,用于生成Bean对象; 实例化BeanDefinitionReader注解配置读取器,用于对特定注解(如@Service、@Repository)的类进行读取转化成 BeanDefinition 对象; 注册内置的BeanPostProcessor的BeanDefinition到容器中; 实例化ClassPathBeanDefinitionScanner路径扫描器,用于对指定的.原创 2021-04-08 15:37:42 · 258 阅读 · 0 评论 -
Spring的AOP是什么?
AOP(Aspect-Oriented Programming:面向切面编程):是指将那些与业务无关,却被多个业务模块所共同调用逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,提升系统的可维护性。AOP实现的关键在于 代理模式,AOP代理主要分为静态代理和动态代理。静态代理的代表为AspectJ;动态代理则以Spring AOP为代表。(1)AspectJ是静态代理,也称为编译时增强,AOP框架会在编译阶段生成AOP代理类,并将AspectJ(切原创 2021-04-07 19:04:54 · 2213 阅读 · 0 评论 -
Spring的IoC是什么?
IOC就是控制反转,是指程序将创建对象的控制权转交给Spring框架进行管理,由Spring通过java的反射机制根据配置文件在运行时动态的创建实例,并管理各个实例之间的依赖关系。对象与对象之间松散耦合,有利于功能的扩展和复用。DI就是依赖注入,和控制反转是同一个概念的不同角度的描述,它是指程序在运行时由IoC容器来动态注入对象需要的外部依赖。Spring的IOC有三种注入方式 :构造器注入、setter方法注入、根据注解注入。...原创 2021-04-07 16:51:37 · 2457 阅读 · 0 评论 -
Spring是什么,她有哪些模块组成,她有哪些优点?
1、Spring是一个轻量级JavaEE开发框架,主要用来提高开发效率和系统的可维护性。2、她主要包括以下7个模块:Spring Context:提供框架式的Bean访问方式,以及企业级功能(JNDI,定时任务等)。ps:JNDI是 Java 命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一,简单来说就是把资源取个名字,再根据名字来找资源。Spring Core:核心类库,所有功能都依赖于此类库,提供IOC和DI服务。原创 2021-04-07 11:43:09 · 183 阅读 · 0 评论