Spring面试

1.什么是spring:
   开源的,轻量级的IOC(控制反转)和AOP(面向切面编程)的容器框架。
2.spring的两个核心技术
  IOC ,AOP
3.什么是IOC
  控制反转
  对bean的创建权由组件转移到了外部容器。
  
4.什么是DI
  依赖注入
  IOC的一个具体的实现过程;
  在运行期,spring容器,组件的依赖对象主动的注入到组件中。
 
5.如何实例化spring容器,如何从spring容器中获取javaBean
  new ClassPathXmlApplicationContext("配置文件的路径");//src下
  context.getBean("id|name");
 
6.springBean 中命名的方式有几种?有什么区别?
  id   name
  name="name1,name2"

7.spring属性注入的方式有几种?
  set
  构造器
  自动注入

8.set属性注入的前提条件是什么?
   set方法

9.set方法属性注入 的简写形式是什么?前提条件是什么?
   p命名空间       属性set方法
                        加载p命名空间
   
10.spring的如下配置,底层代码实现了什么功能?
    <bean id="user" class="pojo.User">
          <property name="name" value="王博" />
    </bean>
   调用无参的构造器,实例化对象;
   调用set方法进行属性注入
11.构造器属性注入的前提是什么?
    有有参的构造器
12.构造器属性注入的简写形式是什么?前提条件是什么?
    C命名空间    有参的构造器+无参的构造器
                      C命名空间
13.spring的如下配置,底层代码实现了什么功能?    
    <bean id="user" class="pojo.User">
          <constructor-arg index="0" value="王博" />
    </bean>
   调用有参的构造器实例化对象,有参的构造器有1个参数。
14.属性自动注入的方式有几种?分别是如何实现的?   
   <bean   autowired=""> 
  <beans  default-autowired="">
    byName   根据属性的名称     set方法属性注入
    byType    类型                    set方法属性注入
    constructor  根据构造器        构造函数属性注入  byType, byName
    no
    default
    

15.spring容器中bean的作用域是什么?
    <bean scope="singleton| prototype|request|session|gloable session">
    singleton默认的:单例的
    prototy:多例的

16.set属性注入的标签
    <property>
17.构造函数属性注入的标签是
<constructor-arg>
18.list   set  map  properties在Spring中的写法
    <list>
         <value>     <ref>
   </list>
   <set>
        <value><ref>
   </set>
   <map>
        <enty key="" value="" key-ref=""  value-ref="">
  </map>
   <props>
        <prop key=""> 值</prop>
   </props>
19.集合类的属性,用P,C命名空间时用到util命名空间
    <util:list id="">
           <value><ref>
    </util:list>
20.spring配置bean实例化有哪些方式?
1 )使用类构造器实例化 (默认无参数)
< bean  id= "user"  class= "com.buba.spring.prop.User"  ></ bean >    
2 )使用静态工厂方法实例化 (简单工厂模式)
<!-- 静态工厂方法 工厂类不需要实例化 -->   
<!-- 调用 JDBCFactory getJdbc 方法得到 jdbc  -->
     < bean   id = "jdbc"   class = "com.buba.simple.JDBCFactory"   factory-method = "getJdbc" >
          < constructor-arg   value = "Mysql" />   
     </ bean >
3 )使用实例工厂方法实例化 ( 工厂方法模式 )
<!-- 实例工厂方法是先将工厂实例化 -->
     <!-- 先创建工厂实例 bean3Facory ,再通过工厂实例创建目标 bean 实例 -->  
     < bean   id = "factory"   class = "com.buba.factory.MysqlFactory" ></ bean >  
     < bean   id = "mysql"   factory-bean = "factory"   factory-method = "getJdbc" ></ bean >
21. Bean的生命周期
bean 的生命周期,只有知道生命周期,才真正的掌握这个对象。
往往笔试和面试总喜欢问关于生命周期的问题。
根据流程图当中涉及调用很多的方法,可能我们直接去理解和记忆比较困难,其实对于这么一大堆方法我们可以根据它们的特点对他们进行整理分类,下面提供一种可供大家参考的分类模型:
分类类型
所包含方法
Bean 自身的方法
1.bean 的构造器实例化 bean
2 . bean 注入属性
3 . 调用 bean init-method 属性指定的初始化方法
4 . 执行业务代码
5 . 销毁时调用 bean destroy-method 属性指定的销毁方法
Bean 级生命周期接口方法
必须继承接口才会执行下面接口中的方法。
BeanNameAware BeanFactoryAware
InitializingBean DiposableBean 等接口中的方法
容器级生命周期接口方法
InstantiationAwareBeanPostProcessor BeanPostProcessor
等后置处理器实现类中重写的方法
22.spring里配置bean有两种方式:
一是 bean工厂BeanFactory,
二是应用上下文: ApplicationContext
23.ApplicationContext应用上下文容器和BeanFactory  Bean工厂的区别是什么?
如果使用 ApplicationContext, 则配置的 bean如果是singleton ,不管你用不用,都被实例化了,(好处就是可以预加载,缺点就是耗内存)
如果是使用 BeanFactory, 则当你实例化该对象的时候,配置的 bean不会被马上实例化,当你使用的时候才会被实例化。好处 就是节约内存,缺点是速度有点慢。
在项目中如果没有特殊要求,一般使用 ApplicationContext完成, 如果是移动设备,内存小,就用 BeanFactory;

                                                                                        不足之处请谅解,仅个人经历

        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值