spring框架学习2:spring基本配置

spring的核心工作:1.创建对象   2.维护对象之间的依赖关系

举例:创建一个电脑E470对象,这个对象依赖两个类,显示器和CPU

创建接口:

package com.zs.entity;

/**
 * 创建Cpu接口
 */
public interface Cpu {
    /**
     * cpu有运算的方法
     */
    void calc();
}
View Code
package com.zs.entity;

/**
 * 创建显示器接口
 */
public interface Display {
    /**
     * 显示器有显示的方法
     */
    void show();
}
View Code

实现接口方法,显示器有两个实现类,一个lg显示器,一个三星显示器,Cpu有一个实现类,英特尔CPU。

package com.zs.entity.impl;

import com.zs.entity.Display;

/**
 * lg显示器实现显示器接口
 */
public class LgDisplay implements Display {
    @Override
    public void show() {
        System.out.println("lg显示器正在显示画面");
    }
}
View Code
package com.zs.entity.impl;

import com.zs.entity.Display;

/**
 * 创建三星显示器类实现显示器接口
 */
public class SumDisplay implements Display {

    @Override
    public void show() {
        System.out.println("三星显示器正在显示画面");
    }
}
View Code
package com.zs.entity.impl;

import com.zs.entity.Cpu;

public class InterCpu implements Cpu {
    @Override
    public void calc() {
        System.out.println("英特尔显示器正在运算");
    }
}
View Code

然后创建电脑E470对象:

package com.zs.entity.impl;

import com.zs.entity.Cpu;
import com.zs.entity.Display;

/**
 * 创建e470电脑,电脑有显示器和Cpu
 */
public class E470 {
    private Display display;
    private Cpu cpu;
    /*电脑有自己的工作的方法*/
    public void work(){
        display.show();
        cpu.calc();
    }
    /*生成get和set方法*/
    public Display getDisplay() {
        return display;
    }

    public void setDisplay(Display display) {
        this.display = display;
    }

    public Cpu getCpu() {
        return cpu;
    }

    public void setCpu(Cpu cpu) {
        this.cpu = cpu;
    }

}
View Code

在spring工厂中添加对象:

<?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">
    <!--将对象交给spring管理-->

    <!--bean标签,使用该元素描述需要spring容器管理的对象
         id:配置类的唯一标识,id不可重复,获得对象时,根据id获得对象,不能使用特殊字符
         name:给被管理的对象起名字,可以重复,可以使用特殊字符
         class:被管理的对象的完整类名-->
    <bean id="lgDisplay" class="com.zs.entity.impl.LgDisplay"/>

    <bean id="interCpu" class="com.zs.entity.impl.InterCpu"/>

    <bean id="sumDisplay" class="com.zs.entity.impl.SumDisplay"/>

    <bean id="e470" class="com.zs.entity.impl.E470">
        <!--property:类的属性
            ref:是引用哪儿个对象,这里要写对象的id-->
        <property name="display" ref="lgDisplay"/>
        <property name="cpu" ref="interCpu"/>
    </bean>

</beans>
View Code
BeanFactory是ApplicationContext的父接口,BeanFactory接口定义了一些spring工厂最底层的使用的方法,一
般在spring的源码中我们使用BeanFactory,但是该类不建议程序员直接使用,建议程序员使用
ApplicationContext接口,该接口对BeanFactory功能进行了一些扩展:
1,提供spring的国际化支持
2,提供了事物的处理方式
3,可以加载多个主配置文件
以后一般开发中使用ApplicationContext接口,但是接口不能直接使用,我们可以同
ClassPathXmlApplicationContext类来实例化这个接口。我们也可以使用FileSystemXmlApplicationContext来实
例化该接口。

测试从spring工厂中获取对象:

import com.zs.entity.impl.E470;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SpringTest {
    @Test
    public void test1() {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        E470 e470 = (E470) context.getBean("e470");
        e470.work();
    }
}
View Code

结果如下:

猜你喜欢

转载自www.cnblogs.com/Zs-book1/p/10995602.html
今日推荐