Spring知识点总结(二)之Spring IOC

 1.创建bean类,并在spring中进行配置交由spring来管理1. IOC(DI) - 控制反转(依赖注入)

    所谓的IOC称之为控制反转,简单来说就是将对象的创建的权利及对象的生命周期的管理过程交由Spring框架来处理,从此在开发过程中不再需要关注对象的创建和生命周期的管理,而是在需要时由Spring框架提供,这个由spring框架管理对象创建和生命周期的机制称之为控制反转。而在 创建对象的过程中Spring可以依据配置对对象的属性进行设置,这个过称之为依赖注入,也即DI。
    
2. IOC的入门案例
    a. 下载Spring
        访问Spring官网,下载Spring相关的包
    b. 解压下载好的压缩包
        其中包含着Spring的依赖包
    c. 创建一个java项目
        spring并不是非要在javaweb环境下才可以使用,一个普通的java程序中也可以使用Spring。
d.导入Spring的libs目录下IOC相关的jar包

  

    e. 创建Spring的配置文件
Spring采用xml文件作为配置文件,xml文件名字任意,但通常都取名为applicationContext.xml,通常将该文件放置在类加载的目录里下  (src目录),方便后续使用。

  f.创建bean类,并在spring中进行配置交由spring来管理

复制代码
            1     <?xml version="1.0" encoding="UTF-8"?>            2     <beans xmlns="http://www.springframework.org/schema/beans"             3             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"             4             xsi:schemaLocation="http://www.springframework.org/schema/beans             5             http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">            6                          7             <bean id="person" class="cn.tedu.beans.Person"></bean>            8                          9     </beans>
复制代码

    g. 在程序中通过Spring容器获取对象并使用
       

复制代码
         1   public class Person_Test {             2             @Test             3             /**             4              * SpringIOC的入门案例             5              */            6             public void  test1(){             7                     ApplicationContext context =            8                                     new ClassPathXmlApplicationContext("applicationContext.xml");             9                     Person p = (Person) context.getBean("person");            10                     p.say();            11             }            12     }
复制代码

 

3. IOC的实现原理
    在初始化一个Spring容器时,Spring会去解析指定的xml文件,当解析到其中的<bean>标签时,会根据该标签中的class属性指定的类的全路径名,通过反射创建该类的对象,并将该对象存入内置的Map中管理。其中键就是该标签的id值,值就是该对象。
    之后,当通过getBean方法来从容器中获取对象时,其实就是根据传入的条件在内置的Map中寻找是否有匹配的键值,如果有则将该键值对中保存的对象返回,如果没有匹配到则抛出异常。
    
    由此可以推测而知:
        默认情况下,多次获取同一个id的bean,得到的将是同一个对象。
        即使 是同一个类,如果配置过多个<bean>标签具有不同的id,每个id都会在内置Map中有一个键值对,其中的值是这个类创建的不同的对象
        同一个<beans

50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信