一个完成的spring 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"
    xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="duke" class="com.springinaction.springidol.Juggler" >
        <!-- 通过构造方法设置属性值 -->
        <constructor-arg value="15"></constructor-arg>
    </bean>

    <bean id="sonnect29" class="com.springinaction.springidol.Sonnet29"></bean>

    <bean id="poeticPoem" class="com.springinaction.springidol.PoeticJuggler">
        <constructor-arg value="15"></constructor-arg>
        <constructor-arg ref="sonnect29"></constructor-arg>
    </bean>

        <!-- 建立一个Instrumentalist bean
        @通过property为bean设置属性值,一旦instrumentalist被实例化,则对象会被赋此值
    -->
    <bean id="Kenny" class="com.springinaction.springidol.Instrumentalist">
        <property name="song" value="Jingle Bells"></property>
        <property name="age" value="37"></property>

        <!-- 这种做法可以实现接口与类的松耦合,比如下面两个都实现了Instrument接口的乐器类,Kenny bean可以随意引用 -->
        <!--
        <property name="instrument" ref="saxphone"></property>
        <property name="instrument" ref="piano"></property>
        -->
        <!-- 内部bean的使用方式,这里用在property,constructor里面也是一样用 -->
        <property name="instrument">
            <bean class="com.springinaction.springidol.piano"></bean>
        </property>
    </bean>

    <bean id="saxphone" class="com.springinaction.springidol.saxphone"></bean>
    <bean id="piano" class="com.springinaction.springidol.piano"></bean>

    <!-- p命名空间用法 -->
    <bean id="Kenny2" class="com.springinaction.springidol.Instrumentalist"
        p:song="Lemon Tree" p:age="30" p:instrument-ref="saxphone"    >
    </bean>

    <!-- 为集合配置bean -->
    <bean id="hank" class="com.springinaction.springidol.OneManBand">
        <property name="instruments">
            <list>
                <ref bean="piano" />
                <ref bean="saxphone" />
            </list>
        </property>
        <property name="instruments2">
            <map>
                <entry key="piano" value-ref="piano"></entry>
                <entry key="saxphone" value-ref="saxphone"></entry>
            </map>
        </property>
    </bean>

    <!-- properties的写法 -->
    <bean id="hank2" class="com.springinaction.springidol.OneManBand">
        <property name="instruments">
            <props>
                <!-- key和value都为String -->
                <prop key="piano">la la la</prop>
                <prop key="saxphone">ta ta ta</prop>
            </props>
        </property>
    </bean>

    <!-- 赋null值 -->
    <!--
    ...
        <property name="xxx"><null/></property>
    ...
     -->
</beans>
package com.springinaction.springidol;

/**
 *
 * @author Alan.chen
 * @定义表演者
 * @类型:接口
 */

public interface Proformer {
    void perform() throws Exception;
}
package com.springinaction.springidol;

public interface Instrument {
    public void play();
}
package com.springinaction.springidol;

public class saxphone implements Instrument {

    public saxphone() {
    }

    @Override
    public void play() {
        System.out.println("toot toot toot");
    }

}
package com.springinaction.springidol;

public class piano implements Instrument {

    public piano(){

    }

    @Override
    public void play() {
        System.out.println("弹得一手好琴。。。");
    }

}
package com.springinaction.springidol;

/**
 *
 * @author Alan.chen
 * @诗人实现类
 */
public class Sonnet29 implements Poem {

    private static String[] LINES = {
        "When in disgrace with fortune and men‘s eyes,",
        "I all alone beweep my outcast state,",
        "And trouble deaf heaven with my bootless cries,",
        "And look upon myself, and curse my fate,",
        "Wishing me like to one more rich in hope,",
        "Featured like him, like him with friends posses‘d,",
        "Desiring this man‘s art, and that man‘s scope,",
        "With what I most enjoy contented least;",
        "Yet in these thoughts myself almost despising,",
        "Haply I think on thee,-and then my state",
        "(Like to the lark at break of day arising From sullen earth) sings hymns at heaven‘s gate;",
        "For thy sweet love remember‘d , such wealth brings,",
        "That then I scorn to change my state with kings.!"
    };

    Sonnet29(){

    }

    @Override
    public void recite() {
        for(int i=0;i<LINES.length;i++)
            System.out.println(LINES[i]);
    }

}
package com.springinaction.springidol;

/**
 *
 * @author Alan.chen
 * @注入Bean属性示例,用setXXX(),getXXX()接收
 * @描述:Instrumentalist,演奏家
 */
public class Instrumentalist implements Proformer {

    public Instrumentalist() {
    }

    private int age;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public void perform() throws Exception {
        System.out.println("playing "+song+" : ");
        instrument.play();
    }

    private String song;
    public void setSong(String song){
        this.song = song;
    }

    public String getSong(){
        return song;
    }

    public String screamSong(){
        return song;
    }

    private Instrument instrument;
    public void setInstrument(Instrument instrument){
        this.instrument = instrument;
    }

}
package com.springinaction.springidol;

import java.util.Collection;
import java.util.Map;

public class OneManBand implements Proformer {

    public OneManBand() {
    }

    @Override
    public void perform() throws Exception {
        for(Instrument instrument:instruments)
            instrument.play();
        for(String key:instruments2.keySet()){
            System.out.println(key + " : ");
            Instrument instrument = instruments2.get(key);
            instrument.play();
        }
    }

    //当被注入的对象时集合时
    private Collection<Instrument> instruments;

    public Collection<Instrument> getInstruments() {
        return instruments;
    }

    public void setInstruments(Collection<Instrument> instruments) {
        this.instruments = instruments;
    }

    //当被注入的对象是map时
    private Map<String,Instrument> instruments2;

    public Map<String, Instrument> getInstruments2() {
        return instruments2;
    }

    public void setInstruments2(Map<String, Instrument> instruments2) {
        this.instruments2 = instruments2;
    }

    //当被注入的map的key和value都是String时,可以用properties来代替map
    //private Properties instruments3;
//    public void setInstruments3(Properties instruments2) {
//        this.instruments2 = instruments3;
//    }

}
package com.springinaction.springidol;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {
    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext(
                "com/springinaction/springidol/spring-idol.xml");
//        Proformer performer = (Proformer)ctx.getBean("duke");
//        Proformer performer = (Proformer)ctx.getBean("poeticPoem");
//        Proformer performer = (Proformer)ctx.getBean("Kenny2");
        Proformer performer = (Proformer)ctx.getBean("hank");
        try {
            performer.perform();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
时间: 2024-10-21 00:38:01

一个完成的spring xml配置文件的相关文章

03SpringMvc_自定义的spring.xml配置文件和逻辑视图名

这篇文章的目的是实现Struts2中一种形式(封装视图的逻辑名称),在Struts2中Action处理后会返回"SUCCESS"这样,然后根据"SUCCESS"跳转到相对应的Jsp页面,但是前一篇文章中直接配的是modelAndView.setViewName("/jsp/success.jsp");.所以这篇文章实现上面那个功能(封装视图的逻辑名称). ----------------------------------------------

spring框架-spring.xml配置文件

运行的时候会报错的,要记得把注释删掉,就不会报错了,这样写注释是为了方便下次自己看. <?xml version="1.0" encoding="UTF-8"?><!--配置文件的命名空间 --><!--注解的方式 --><beans xmlns="http://www.springframework.org/schema/beans"<!-- 这行就是只要你用spring的,这个是必须要的 --&

4.Spring——xml配置文件

如果使用Maven构建项目,spring在加载xsd文件时总是先试图在本地查找xsd文件(spring的jar包中已经包含了所有版本的xsd文件), 如果没有找到,才会转向去URL指定的路径下载. 1.Spring3 配置文件样例(applicationContext.xml) <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.o

spring xml配置文件

spring property标签中的 ref属性和ref 标签有什么不同? 如下:<property name="a" ref="b" /> http://zhidao.baidu.com/link?url=_Cy2EnnSVqFZxuiwnrYbsAFMIgDB7XYVGWXGx6a6Tm3fiSVf5_opNexbHCJJvCwZjbr24fO3zxdvbZSxrfDTaq

Spring 3.0 学习-DI 依赖注入_创建Spring 配置-使用一个或多个XML 文件作为配置文件,使用自动注入(byName),在代码中使用注解代替自动注入,使用自动扫描代替xml中bea

文章大纲 在xml中声明bean和注入bean 在xml中声明bean和自动注入bean 自动扫描bean和自动注入bean 对自动扫描bean增加约束条件 首次接触spring请参考 Spring 3.0 学习-环境搭建和三种形式访问 1.典型的Spring XML 配置文件表头 <?xml version="1.0" encoding="UTF-8"?><!-- 一般化的Spring XML 配置 --> <beans xmlns=

spring.xml及注解

spring.xml配置文件中配置注解: 开启注解(及自动扫描包中bean): 1:<context:component-scan base-package="com.bzu" />    在base-packge指定所需要扫描的包,建议指定一个包含整个架构的包,可以扫描到各层所定义的bean; 或2:<context:annotation-config />   2种方法选一; 引入外部properties文件,常为数据库连接配置文件; 1:<bean

spring xml配置

一个完整的spring xml配置:是把action,service,dao以及其它的资源性配置(如basedao)和公共性配置(如连接数据库)配置在resource.xml中,这样就有四个xml配置信息. 案例: 四个xml配置: applicationContext-action.xml: <?xml version="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframe

Spring框架[一]——spring概念和ioc入门(ioc操作xml配置文件)

Spring概念 spring是开源的轻量级框架(即不需要依赖其他东西,可用直接使用) spring核心主要两部分 aop:面向切面编程,扩展功能不是修改源代码来实现: ioc:控制反转,比如:有一个类,在类中有个方法(非静态的方法),要调用类中的这个方法,则需要创建类的对象,使用对象调用方法.创建类对象的过程,需要new出来对象:而ioc则是将对象的创建不是通过new方式实现,而是交给spring配置来创建对象(即,将对象的创建交给spring来管理): spring是一站式框架 spring

Spring中加载xml配置文件的六种方式

因为目前正在从事一个项目,项目中一个需求就是所有的功能都是插件的形式装入系统,这就需要利用Spring去动态加载某一位置下的配置文件,所以就总结了下Spring中加载xml配置文件的方式,我总结的有6种, xml是最常见的spring 应用系统配置源.Spring中的几种容器都支持使用xml装配bean,包括: XmlBeanFactory,ClassPathXmlApplicationContext,FileSystemXmlApplicationContext,XmlWebApplicati