Spring学习-helloworld

第一步,
新建一个Java Project,
然后configure path -> add Libraries 导入Spring包内dist文件夹下的所有文件。
导入common-logging包

第二步,
新建一个PersonService.java文件

package org.crazyit.app.service;

public class PersonService
{
    private String name;
    //name属性的setter方法
    public void setName(String name)
    {
        this.name = name;
    }
    //测试Person类的info方法
    public void info()
    {
        System.out.println("此人名为:" 
            + name);
    }
}

新建一个SpringTest.java

package lee;

import org.crazyit.app.service.PersonService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SpringTest
{
    public static void main(String[] args)
    {
        //创建Spring的ApplicationContext
        ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");
        //输出Spring容器
        System.out.println(ctx);
        PersonService p = ctx.getBean("personService" , PersonService.class);
        //其中,"personService"是在bean.xml中定义的id
        p.info(); 
    }
}

第三步,定义bean.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
    <!-- **将PersonService类部署成Spring容器中的Bean** -->
    <bean id="personService" class="org.crazyit.app.service.PersonService">
        <property name="name" value="wawa"/>
    </bean>
</beans>

输出wawa,
分析:
Spring容器根据配置文件信息,负责创建Person实例,并为Person实例设置属性值–这种由Spring容器为对象设置属性的方式称为-控制反转(Inversion of Control,IOC)
Person实例的属性并不是程序主动设置的,而是由Spring容器来负责注入的。

不管是依赖注入(Dependency Injection)还是控制反转(IOC,Inversion Of Control),其含义完全相同:
    当某个Java实例(调用者)需要另一个Java实例(被调用者),传统程序设计中通常是由调用者来创建被调用者的实例。
    在依赖注入模式下,创建被调用者的工作不再由调用者来完成,因此成为控制反转(IOC,Inversion Of Control);
    创建被调用者实例的工作通常由Spring容器来完成,然后注入调用者,因此也称为依赖注入(Dependency Injection)。
所谓依赖注入,是指程序运行过程中,如果需要另一个对象协作(调用它的方法,访问它的属性)时,无须再代码中创建被调用者,而是依赖于外部容器的注入。

你可能感兴趣的:(spring)