Spring4.0学习笔记002——Spring应用初识

1. 一般应用的组织方式

  1. 新建名为 com.yfyzwr.spring.beans 的package,在package中添加名为 HelloWorld 的java类。
  2. 在HelloWorld类中实现如下代码。

    public class HelloWorld {
        private String name;
    
        public HelloWorld() {
            System.out.println("HelloWorld Constructor");
        }
    
        public void setName(String name) {
            System.out.println("Set 'name' Property");
            this.name = name;
        }
    
        public void sayHello(){
            System.out.println("hello: " + name);
        }
    }
  3. 添加程序的Main方法类。

    public class AppEntry {
    
        public static void main(String[] args) {
    
            //创建HelloWorld对象
            HelloWorld helloWorld = new HelloWorld();
            //给name属性赋值
            helloWorld.setName("World");
            //调用sayHello方法
            helloWorld.sayHello();
        }
    }
  4. 运行即可获得期望的输出结果。

2. Spring应用的组织方式

  1. 右键点击项目的src目录,依次点击【New】->【Other】->【Spring】->【Spring bean Configuration File】按钮,输入 ApplicationContext 的配置文件名。
  2. 修改得到的名为 ApplicationContext.xml 的配置文件。

    <?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 -->
        <bean id="HelloWorld" class="com.yfyzwr.spring.beans.HelloWorld">
            <property name="name" value="World"></property>
        </bean>
    
    </beans>
  3. 修改Main方法的实现。

    public class AppEntry {
    
    public static void main(String[] args) {
    
        //创建Spring容器对象
        ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");
        //从容器中获取bean实例对象
        HelloWorld helloWorld = (HelloWorld)context.getBean("HelloWorld");
        //调用sayHello方法
        helloWorld.sayHello();
    
        }
    }
  4. 运行即可获得与前述一般应用相同的输出结果。
  5. 如果Main方法中只用“创建Spring容器对象”语句,那输出结果如何呢?

    从输出结果可以发现,HelloWord的构造函数和属性name的set函数会被调用。说明Spring在加载xml配置文件的时候,会调用bean类的构造函数、property中成员变量对应的set函数。

    这样也就要求,添加的“property属性名字”是与类的成员变量相对应的。既然在xml中为该成员变量指定了对应的value值,那么就需要在该类中为该成员变量准备对应的set函数。

3. Spring应用的简单说明

3-1. 容器的两种实现方式

Spring IOC容器在读取Bean配置、创建Bean实例之前, 必须对容器进行实例化。只有在容器实例化后, 才可以从IOC容器里获取Bean实例并使用。

Spring提供了两种类型的IOC容器实现(不管何种方式,xml配置文件都相同):

  1. BeanFactory:IOC容器的基本实现,它是 Spring 框架的基础设施,面向 Spring 本身。
  2. ApplicationContext:提供了更多的高级特性(是BeanFactory的子接口),ApplicationContext 面向使用Spring框架的开发者。所以几乎所有的应用场合都是直接使用ApplicationContext而非底层的BeanFactory接口。

3-2. ApplicationContext的两种实现类

利用eclipse的 Ctrl + t 快捷键,我们可以查看ApplicationContext接口的继承结构。

从上图可以得到如下信息:

  1. ApplicationContext接口有两个实现类,可以利用此实现类来实例化容器对象。

    • ClassPathXmlApplicationContext:从 类路径下加载配置文件
    • FileSystemXmlApplicationContext:从文件系统中加载配置文件
  2. ConfigurableApplicationContext接口扩展于ApplicationContext接口,利用eclipse的 Ctrl + o 快捷键可以查看其结构, 该接口新增加的refresh() 和 close()让方法,可以使得ApplicationContext 具有启动、刷新和关闭上下文的能力。

你可能感兴趣的:(spring)