您的位置:首页 > 编程语言 > Java开发

Spring入门实例

2006-09-10 09:03 411 查看
Spring模块化是很强的,各个功能模块都是独立的,其中IoC就是用XML来定义生成一个对象的模式.
Bean可重用软件组件,将它们组合起来使用可创建出对象
Java Bean也就是一个Java的类.
 
例:
一个Human接口
public interface Human
{
       void eat();
       void walk();
}
 
一个中国人的类
public class Chinese implements Human
{
       public void eat()
{
              System.out.println(“rice”);
       }
      
       public void walk()
       {
              System.out.println(“walk”);
}
}
 
一个美国人的类
public class American implements Human
{
       public void eat()
{
       System.out.println(“bread”);
}
 
public void walk()
{
       System.out.println(“car”);
}
}
 
对上述创建一个工厂类Factory
public class Factory
{
       public final static String CHINESE = "Chinese";
       public final static String AMERICAN = "American";
      
       pbulic Human getHuman(String ethnic)
       {
              if(ethnic.equals(CHINESE))
              {
                     return new Chinese();
              }
              else
                     {
                            if(ethic.equals(AMERICAN))
                            {
                                   return new American(); 
                            }
                            else
                            {
                                   throw new Exception("参数错误!");
                            }
                     }
                    
       }
}
 
下面是一个测试程序,使用工厂方法得到不同的对象,并执行相应的方法
public class MainClass
{
       public static void main(String [] args)
       {
              Human human = null;
              human = new Factory.getHuman(Factory.CHINESE);
              human.eat();
              human.walk();
             
              human = new Factory.getHuman(Factory.AMERICAN);
              human.eat();
              human.walk();
       }
}
 
采用Spring的IOC的用法如下
所谓IOC就是一个用xml来定义生成对象的模式.
创建一个applicationcontext.xml文件
[align=left]<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">[/align]
<beans>
       <bean id="China" class="Chinese" />
       <bean id="USA" class="American" />
</beans>
 
修改MainClass程序如下
public class MainClass
{
       public static void main(String [] args)
       {
              /*Human human = null;
              human = new Factory.getHuman(Factory.CHINESE);
              human.eat();
              human.walk();
             
              human = new Factory.getHuman(Factory.AMERICAN);
              human.eat();
              human.walk();*/
             
    BeanFactory bf= new XmlBeanFactory(new ClassPathResource("/applicationcontext.xml"));
        Human human = null;
        human = (Human)bf.getBean(China);
        human.eat();
        human.walk();
        human = (Human)bf.getBean(UsSA);
        human.eat();
        human.walk();
       }
}
上述程序表明,bf就相当于原来的Factory工厂
<bean id="China” class=”Chinese” />
id就是bf.getBean的参数值,一个字符串, class就是一个类(包名+类名)然后,获得Chinese对象 human = (Object) bf.getBean(China);
因为getBean方法返回一个Object类型,所以前面要加一个类型转换. 如果需要获得哪个类,只要将class属性更改一下 而前一种Factory模式则要修改Factory类里的方法并重新编译运行.
 
applicationcontext.xml的用法过程
例:
<?xml version="1.0" encoding="UTF-8"?>
       <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
       <beans>
              <bean id="China" class=" Chinese" singleton="true">
                     <property name="humenName">
                            <value>ZhangSan</value>
                     </property>
              </bean>
 
              &l
8d57
t; bean id="USA" class=" American"/>
</beans>
 
假设Chinese里有一个humanName属性,此时生成Chinese对象时,ZhangSan这个值将自动设置到humanName属性中,而且由于sinaleton=true 这时生成的Chinese对象将采用单例模式,系统将仅生成一个Chinese对象实例.装配属性后将去instancOf判断Chinese是否是实现了FactoryBean的一个子类,如不是直接返回一个对象,如果是将调用FactoryBean的getObject方法返回一个对象
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息