Spring框架

1.4 HelloWorld

  • 目标:使用Spring创建对象,为属性赋值
  • 创建Student类
  • 创建Spring配置文件

         <!-- 使用bean元素定义一个由IOC容器创建的对象 -->

         <!-- class属性指定用于创建bean的全类名 -->

         <!-- id属性指定用于引用bean实例的标识 -->

         <bean id="student" class="com.atguigu.helloworld.bean.Student">

                   <!-- 使用property子元素为bean的属性赋值 -->

                   <property name="studentId" value="1001"/>

                   <property name="stuName" value="Tom2015"/>

                   <property name="age" value="20"/>

         </bean>

  • 测试:通过Spring的IOC容器创建Student类实例

//1.创建IOC容器对象

ApplicationContext iocContainer =

                   new ClassPathXmlApplicationContext("helloworld.xml");

//2.根据id值获取bean实例对象

Student student = (Student) iocContainer.getBean("student");

//3.打印bean

System.out.println(student);

 

第2章  IOC容器和Bean的配置

2.1 IOC和DI

2.1.1 IOC(Inversion of Control):反转控制

在应用程序中的组件需要获取资源时,传统的方式是组件主动的从容器中获取所需要的资源,在这样的模式下开发人员往往需要知道在具体容器中特定资源的获取方式,增加了学习成本,同时降低了开发效率。

反转控制的思想完全颠覆了应用程序组件获取资源的传统方式:反转了资源的获取方向——改由容器主动的将资源推送给需要的组件,开发人员不需要知道容器是如何创建资源对象的,只需要提供接收资源的方式即可,极大的降低了学习成本,提高了开发的效率。这种行为也称为查找的被动形式。

 

2.1.2 DI(Dependency Injection):依赖注入

IOC的另一种表述方式:即组件以一些预先定义好的方式(例如:setter 方法)接受来自于容器的资源注入。相对于IOC而言,这种表述更直接。

2.1.3 IOC容器在Spring中的实现

1)在通过IOC容器读取Bean的实例之前,需要先将IOC容器本身实例化。

2)Spring提供了IOC容器的两种实现方式

① BeanFactory:IOC容器的基本实现,是Spring内部的基础设施,是面向Spring本身的,不是提供给开发人员使用的。

② ApplicationContext:BeanFactory的子接口,提供了更多高级特性。面向Spring的使用者,几乎所有场合都使用ApplicationContext而不是底层的BeanFactory。

 

2.1.4 ApplicationContext的主要实现类

  • ClassPathXmlApplicationContext:对应类路径下的XML格式的配置文件
  • FileSystemXmlApplicationContext:对应文件系统中的XML格式的配置文件
  • 在初始化时就创建单例的bean,也可以通过配置的方式指定创建的Bean是多实例的。