美文网首页
Spring5 (1) - HelloWorld

Spring5 (1) - HelloWorld

作者: 小白201808 | 来源:发表于2018-09-15 21:20 被阅读21次

    本人使用的开发是工具是STS

    一、我们以传统的方式去写一遍HelloWorld

    打开sts,做的一次练习的准备工作

    a.创建一个名为Spring5_base的java工程
    b.在该工程的src目录下创建一个名为com.keen.hello的包
    

    (1) 在该包下创建一个HelloWorld类

    package com.keen.hello;
    
    public class HelloWorld {
       private String username;
       private int age;
       
       public void setAge(int age) {
        this.age = age;
       }
       
       public void setUsername(String username) {
        this.username = username;
       }
       
       public void sayHello() {
           System.out.println("Welcome to the world of sping5,hello: "+username +" age :"+age);;
       }
    }
    
    

    (2) 在该包下创建一个单元测试类HelloWorldTest

    package com.keen.hello;
    public class HelloWorldTest {
    
        @Test//使用传统的方式写一遍
        void testOld() throws Exception {
            //创建一个对象
            HelloWorld world = new HelloWorld();
            //给当前对象设置相关属性
            world.setUsername("keen");
            world.setAge(12);
            world.sayHello();
            
        }
    

    (3) output:

    Welcome to the world of sping5,hello: keen age :24
    

    二、我们使用spring写一遍

    (1) 创建相同的一个HelloWorld类

    package com.keen.hello;
    
    public class HelloWorld {
       private String username;
       private int age;
       
       public void setAge(int age) {
        this.age = age;
       }
       
       public void setUsername(String username) {
        this.username = username;
       }
       
       public void sayHello() {
           System.out.println("Welcome to the world of sping5,hello: "+username +" age :"+age);;
       }
    }
    
    

    (2) 此时我们要做一些准备工作

     1.在该工程下创建一个lib文件,导入jar包(我使用的是Spring5)
      我们需要引入连个jar包,spring-beans-5.0.0release.jar
      Spring-core-5.0.0release.jar,并选中右键build path
      2.在该工程下创建一个资源包命名为resource,并在该包下创建一个SpringBeanConfigurationFile,命名为applicaationContext.xml ,
      接着点next(配置一下文件的schema约束),选第一个beans,然后在接下来的select desired xsd,选中第一个 .../schema/beans/spring-beans.xsd
    

    接着出现就这个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">
    
    </beans>
    
    

    (2)接着我们在这个文件中配置bean

    <?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的IOC容器,你需要帮我管理哪个类的对象 -->
    <!--这里的id作为bean的名字,你可以写你喜欢的名字(规范就好),class是用来指定HelloWorld的路径,用于反射得到bean的实例-->
    <bean id = "helloWorld" class="com.keen.hello.HelloWorld">
    
    <!-- 操作属性 ,类似我们传统方法的set属性,注入信息-->
    <property name = "username" value = "keen"/>
    <property name = "age" value = "18"/>
    </bean>
    </beans>
    

    (3)在测试类中启动并使用Spring容器

    @Test
       void testIoc() throws Exception {
           HelloWorld world = null;
           
           //-----------------------
           //1.从classpath 路径寻找配置文件的路径,创建资源对象
           Resource resource = new ClassPathResource("applicationContext.xml");
           
           //2.根据资源对象,创建Spring IOC 容器对象
           BeanFactory factory = new XmlBeanFactory(resource);
           
           //3.从spring Ioc容器中获取指定的名称(helloworld)的对象
           world = (HelloWorld) factory.getBean("helloWorld");
           
           world.sayHello();
           
           
       }
    

    output:

    Welcome to the world of sping5,hello: keen age :18 
    
    在这个简单的HelloWorld中使用Spring,我们似乎发现比传统的方法更加麻烦,但是听说(因为我也是刚接触),在以后大的开发项目中,优势就显示出来了。
    其实applicaationContext.xml配置文件帮我们做了很多工作的。

    如果没有配置文件,我们需要写以下或者更多的代码

    //模拟SpringIOC容器的操作
        @Test
        void testIocMock() throws Exception {
            String className = "com.keen.hello.HelloWorld";
            HelloWorld world = null;
            
            //----------------------
            //使用反射创建对象
            Class clzz = Class.forName(className);
            Constructor con = clzz.getConstructor(); 
            con.setAccessible(true);//设置构造器的可访问属性
            Object obj = con.newInstance();
            
            //使用内省机制设计属性值
             BeanInfo beanInfo= Introspector.getBeanInfo(clzz);
             PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
             
             for(PropertyDescriptor pd:pds) {
             
                 //HelloWorld类中的所有的属性的名称
                 String propertyName = pd.getName();
                 
                 if("username".equals(propertyName)) {
                     //调用username的setter方法
                     pd.getWriteMethod().invoke(obj, "lucy");
                     
                 }else if ("age".equals(propertyName)) {
                     //调用age的setter方法
                     pd.getWriteMethod().invoke(obj, 18);
                     
                 }
             }
             
            world = (HelloWorld)obj;
            //----------------------
            
            world.sayHello();
        }
    

    好了,今天的sprig-helloworld就学到这吧!

    相关文章

      网友评论

          本文标题:Spring5 (1) - HelloWorld

          本文链接:https://www.haomeiwen.com/subject/txwtnftx.html