乐趣区

关于java:锁屏面试题百日百刷Spring篇三


锁屏面试题百日百刷,每个工作日保持更新面试题。锁屏面试题 app、小程序现已上线,官网地址:https://www.demosoftware.cc/#/introductionPage。已收录了每日更新的面试题的所有内容,还蕴含特色的解锁屏幕温习面试题、每日编程题目邮件推送等性能。让你在面试中后人一步,吊打面试官! 接下来的是今日的面试题:

1、什么是 Spring 的依赖注入?
平时的 java 开发中,程序员在某个类中须要依赖其它类的办法,则通常是 new 一个依赖类再调用类实例的办法,这种开发存在的问题是 new 的类实例不好对立治理,spring 提出了依赖注入的思维,即依赖类不禁程序员实例化,而是通过 spring 容器帮咱们 new 指定实例并且将实例注入到须要该对象的类中。依赖注入的另一种说法是“管制反转”,艰深的了解是:平时咱们 new 一个实例,这个实例的控制权是咱们程序员,而管制反转是指 new 实例工作不禁咱们程序员来做而是交给 spring 容器来做。

2、有哪些不同类型的依赖注入形式?
Spring 提供了多种依赖注入的形式。
1.Set 注入

<!-- 配置 bean, 配置后该类由 spring 治理 --> 
<bean name="springAction" class="com.bless.springdemo.action.SpringAction"> 
<!-- 依赖注入, 配置以后类中相应的属性 --> 
<property name="springDao" ref="springDao"></property> 
</bean> 
<bean name="springDao"         class="com.bless.springdemo.dao.impl.SpringDaoImpl"></bean>

2. 结构器注入

<!-- 配置 bean, 配置后该类由 spring 治理 --> 
<bean name="springAction" class="com.bless.springdemo.action.SpringAction"> 
<!-- 创立结构器注入, 如果主类有带参的构造方法则需增加此配置 --> 
<constructor-arg ref="springDao"></constructor-arg> 
<constructor-arg ref="user"></constructor-arg> 
</bean> 
<bean name="springDao"         class="com.bless.springdemo.dao.impl.SpringDaoImpl"></bean> 
<bean name="user" class="com.bless.springdemo.vo.User"></bean>

3. 动态工厂的办法注入

<!-- 配置 bean, 配置后该类由 spring 治理 --> 
<bean name="springAction" class="com.bless.springdemo.action.SpringAction" > 
<!-- 应用动态工厂的办法注入对象, 对应上面的配置文件 )--> 
<property name="staticFactoryDao" ref="staticFactoryDao"></property> 
</property> 
</bean> 
<!-- 此处获取对象的形式是从工厂类中获取静态方法 --> 
<bean name="staticFactoryDao"         class="com.bless.springdemo.factory.DaoFactory" factory-method="getStaticFactoryDaoImpl"></bean>

4. 实例工厂的办法注入

<!-- 配置 bean, 配置后该类由 spring 治理 --> 
<bean name="springAction" class="com.bless.springdemo.action.SpringAction"> 
<!-- 应用实例工厂的办法注入对象, 对应上面的配置文件 --> 
<property name="factoryDao" ref="factoryDao"></property> 
</bean> 
<!-- 此处获取对象的形式是从工厂类中获取实例办法 --> 
<bean name="daoFactory"         class="com.bless.springdemo.factory.DaoFactory"></bean> 
<bean name="factoryDao" factory-bean="daoFactory"         factory-method="getFactoryDaoImpl"></bean>

3、什么是 Spring beans?
Spring beans 是那些造成 Spring 利用的骨干的 java 对象。它们被 Spring IOC 容器初始化,拆卸,和治理。这些 beans 通过容器中配置的元数据创立。比方,以 XML 文件中 <bean/> 的模式定义。Spring 框架定义的 beans 默认都是单例 beans。

4、一个 Spring Beans 的定义须要蕴含什么?
一个 Spring Bean 的定义蕴含容器必知的所有配置元数据,包含如何创立一个 bean,它的生命周期详情及它的依赖。

5、你怎么定义类的作用域?
当定义一个 <bean> 在 Spring 里,咱们还能给这个 bean 申明一个作用域。它能够通过 bean 定义中的 scope 属性来定义。如,当 Spring 要在须要的时候每次生产一个新的 bean 实例,bean 的 scope 属性被指定为 prototype。
另一方面,一个 bean 每次应用的时候必须返回同一个实例,这个 bean 的 scope 属性必须设为 singleton。

6、Spring 反对的几种 bean 的作用域?
Spring 框架反对以下五种 bean 的作用域:
singleton : bean 在每个 Spring ioc 容器中只有一个实例。
prototype:一个 bean 的定义能够有多个实例。
request:每次 http 申请都会创立一个 bean,该作用域仅在基于 web 的 Spring ApplicationContext 情景下无效。
session:在一个 HTTP Session 中,一 个 bean 定义对应一个实例。该作用域仅在基于 web 的 Spring ApplicationContext 情景下无效。
global-session:在一个全局的 HTTP Session 中,一个 bean 定义对应一个实例。该作用域仅在基于 web 的 Spring ApplicationContext 情景下无效。
缺省的 Spring bean 的作用域是 Singleton。

7、Spring 框架中的单例 bean 是线程平安的吗?
不是线程平安的。

8、什么是 Spring 的外部 bean?
当一个 bean 仅被用作另一个 bean 的属性时,它能被申明为一个外部 bean,为了定义 inner bean,在 Spring 的 基于 XML 的 配置元数据中,能够在 <property/> 或 <constructor-arg/> 元素内应用 <bean/> 元素,外部 bean 通常是匿名的,它们的 Scope 个别是 prototype。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="person2" class="com.itdjx.spring.dependency.injection.Person">
        <property name="name" value="李玉"/>
        <property name="age" value="23"/>
        <property name="sex" value="女"/>
        <property name="car" >
            <bean class="com.itdjx.spring.dependency.injection.Car">
                <constructor-arg value="Ferrari" index="0"/>
                <constructor-arg value="Italy" index="1"/>
                <constructor-arg value="22500000" type="double"/>
            </bean>
        </property>
    </bean>
</beans>

更多面试题可关注 ”demo 锁屏面试题 ” 公众号通过小程序或 App 学习面试题

退出移动版