(2)Spring之IOC面试核心知识点

简介: Spring之IOC面试核心知识点

Spring之IOC面试核心知识点

1、什么是Spring?

Spring框架是一个开源的,轻量级的 项目管理框架


致力于JAVAEE轻量级解决方案,用于管理[创建|使用|销毁] 现有JAVAEE项目中的组件(控制器、业务类、DAO类、事务 等),也习惯称Spring是一个工厂、容器。


注意:Spring通常不管理实体类。


Spring的核心思想:IOC、AOP


2、Spring工厂的作用是什么?

Spring的工厂:ApplicationContext(接口)


作用:


创建和管理对象


两个实现类:


1) ClassPathXmlApplicationContext(非web环境下)
   ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml");
2) WebXmlApplicationContext(web环境下)  不直接使用,SSM框架整合后底层使用

3、Spring的环境搭建有哪些?

环境搭建:


导jar包


创建spring的核心配置文件(名称随意、位置/src根或子目录 任意位置)


4、Spring的基本开发步骤是什么?

开发步骤:


定义JAVA类


在spring的核心配置文件(applicationContext.xml)中配置组件


代码案例:


<!--配置dao
id:组件的唯一标识
class:组件的全限定名,包名.子包名.类名
-->
<bean id="userDao" class="com.tjcu.UserDaoImpl"></bean>

调用Spring工厂的API

代码案例:


5、什么是IOC(控制反转)?

IOC(Inversion Of Controll) 控制反转【[ɪnˈvɜːʃn]:倒置】

   把创建对象的权利 由java源码中手动new创建 转移到spring中 交给spring工厂去创建。


好处:解耦合(降低代码的耦合度)


Spring的工厂 不仅能创建对象,还可以解决 对象和对象依赖关系,即DI(依赖注入)。


6、什么是DI(依赖注入)?

DI(Dependecy Injection)依赖注入


一个类 需要使用另一个类时,可以将 被使用的类的对象 定义成这个类的成员变量,在Spring的配置文件中进行属性的赋值。


DI 简单理解为: 在spring中 给对象的属性 自动赋值。


好处:解耦合

7、Spring中注入的方式有哪几种?

Spring中的注入的方式共有三种:


set注入:通过set方法给属性赋值。


构造注入:通过构造方法 给属性赋值。


自动注入:通过set方法 给属性自动赋值。


8、如何控制bean对象的创建次数(创建模式)?

在Spring中,可以通过bean标签的scope属性 控制创建对象的次数:

语法:


 <bean id=”” scope=”singleton|prototype”>
 singleton:单例,每工厂只创建一个对象(默认)
 prototype:多例,每次调用工厂都会创建新的对象

在开发中,创建模式的选择:

   1) 单例:Serlvet、Service、Dao


   2) 多例:Action


9、请问什么是IoC和DI?并且简要说明一下DI是如何实现的?

IoC叫控制反转,是Inversion of Control的缩写。


DI(Dependency Injection)叫依赖注入,是对IoC更简单的诠释。


控制反转是把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。所谓的"控制反转"就是对组件对象控制权的转移,从程序代码本身转移到了外部容器 ,由容器来创建对象并管理对象之间的依赖关系。


IoC体现了好莱坞原则 - “Don’t call me, we will call you”。


依赖注入的基本原则是应用组件不应该负责查找资源或者其他依赖的协作对象。配置对象的工作应该由容器负责,查找资源的逻辑应该从应用组件的代码中抽取出来,交给容器来完成。


DI是对IoC更准确的描述,即组件之间的依赖关系由容器在运行期决定,形象的来说,即由容器动态的将某种依赖关系注入到组件之中。


一个类A需要用到接口B中的方法,那么就需要为类A和接口B建立关联或依赖关系,最原始的方法是在类A中创建一个接口B的实现类C的实例,但这种方法需要开发人员自行维护二者的依赖关系,也就是说当依赖关系发生变动的时候需要修改代码并重新构建整个系统。如果通过一个容器来管理这些对象以及对象的依赖关系,则只需要在类A中定义好用于关联接口B的方法(构造器或setter方法),将类A和接口B的实现类C放入容器中,通过对容器的配置来实现二者的关联。


依赖注入可以通过setter方法注入(设值注入)、构造器注入和接口注入三种方式来实现,Spring支持setter注入和构造器注入,通常使用构造器注入来注入必须的依赖关系,对于可选的依赖关系,则setter注入是更好的选择,setter注入需要类提供无参构造器或者无参的静态工厂方法来创建对象。


10、请简单说明一下依赖注入的方式有哪几种?以及这些方法如何使用?

1、Set注入 2、构造器注入 3、接口注入


构造器依赖注入 :构造器依赖注入通过容器触发一个类的构造器来实现的,该类有一系列参数,每个参数代表一个对其他类的依赖。


Setter方法注入 :Setter方法注入是容器通过调用无参构造器或无参static工厂 方法实例化bean之后,调用该bean的setter方法,即实现了基于setter的依赖注入。


11、Spring中Bean 的生命周期是怎么样的?

Spring中Bean的生命周期从大方面讲是定义创建实例——》初始化——》使用——》销毁


相关文章
|
1月前
|
安全 Java 数据库
一天十道Java面试题----第四天(线程池复用的原理------>spring事务的实现方式原理以及隔离级别)
这篇文章是关于Java面试题的笔记,涵盖了线程池复用原理、Spring框架基础、AOP和IOC概念、Bean生命周期和作用域、单例Bean的线程安全性、Spring中使用的设计模式、以及Spring事务的实现方式和隔离级别等知识点。
|
1月前
|
XML Java 数据格式
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
这篇文章是Spring5框架的实战教程,主要介绍了如何在Spring的IOC容器中通过XML配置方式使用外部属性文件来管理Bean,特别是数据库连接池的配置。文章详细讲解了创建属性文件、引入属性文件到Spring配置、以及如何使用属性占位符来引用属性文件中的值。
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
|
6天前
|
XML Java 数据格式
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
Spring 第二节内容补充 关于Bean配置的更多内容和细节 万字详解!
58 18
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
|
7天前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
7天前
|
缓存 Java 数据库
【Java面试题汇总】Spring篇(2023版)
IoC、DI、aop、事务、为什么不建议@Transactional、事务传播级别、@Autowired和@Resource注解的区别、BeanFactory和FactoryBean的区别、Bean的作用域,以及默认的作用域、Bean的生命周期、循环依赖、三级缓存、
【Java面试题汇总】Spring篇(2023版)
|
8天前
|
Java 数据库连接 数据格式
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
IOC/DI配置管理DruidDataSource和properties、核心容器的创建、获取bean的方式、spring注解开发、注解开发管理第三方bean、Spring整合Mybatis和Junit
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
|
8天前
|
Java 数据库连接 Maven
Spring基础1——Spring(配置开发版),IOC和DI
spring介绍、入门案例、控制反转IOC、IOC容器、Bean、依赖注入DI
Spring基础1——Spring(配置开发版),IOC和DI
|
1月前
|
XML Java 数据格式
Spring5入门到实战------3、IOC容器-Bean管理XML方式(一)
这篇文章详细介绍了Spring框架中IOC容器的Bean管理,特别是基于XML配置方式的实现。文章涵盖了Bean的定义、属性注入、使用set方法和构造函数注入,以及如何注入不同类型的属性,包括null值、特殊字符和外部bean。此外,还探讨了内部bean的概念及其与外部bean的比较,并提供了相应的示例代码和测试结果。
Spring5入门到实战------3、IOC容器-Bean管理XML方式(一)
|
1月前
|
XML Java 数据格式
Spring5入门到实战------5、IOC容器-Bean管理(三)
这篇文章深入探讨了Spring5框架中IOC容器的高级Bean管理,包括FactoryBean的使用、Bean作用域的设置、Bean生命周期的详细解释以及Bean后置处理器的实现和应用。
Spring5入门到实战------5、IOC容器-Bean管理(三)
|
1月前
|
XML Java 数据格式
Spring5入门到实战------4、IOC容器-Bean管理XML方式、集合的注入(二)
这篇文章是Spring5框架的实战教程,主题是IOC容器中Bean的集合属性注入,通过XML配置方式。文章详细讲解了如何在Spring中注入数组、List、Map和Set类型的集合属性,并提供了相应的XML配置示例和Java类定义。此外,还介绍了如何在集合中注入对象类型值,以及如何使用Spring的util命名空间来实现集合的复用。最后,通过测试代码和结果展示了注入效果。
Spring5入门到实战------4、IOC容器-Bean管理XML方式、集合的注入(二)