• 一、spring入门案例


    一、什么是spring呢?话不多说,来看看这个入门案例

    1. 建立java项目myspring1

    2. 在包com.beans包下建立简单javabean名叫User

    package com.beans;
    
    public class User {
        private String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
        public void sayHello(){
            System.out.println("Hello "+name);
        }
    }

    3.在com.test包下建立Test.java测试

    package com.test;
    
    import com.beans.User;
    
    public class Test {
        
        public static void main(String[] args) {
            
            User user=new User();
            user.setName("蔡文姬");
            user.sayHello();
            
        }
    
    }


    4.运行结果当然是打出"Hello 蔡文姬",但是如果叫你不许用User user=new User();这样的代码建立新对象,那你打得出"Hello 蔡文姬"吗?

    5.这就要用到spring了,在引入spring开发包之后,在src目录下新建applicationContext.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-3.0.xsd">
    
        <bean id="user" class="com.beans.User">
            <property name="name" value="蔡文姬"/>
        </bean>
    </beans>

    6.此时在Test.java中,不必new一个User对象,只需要

    package com.test;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import com.beans.User;
    
    public class Test {
        
        public static void main(String[] args) {
            
            ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
            User user=(User) ac.getBean("user");
            user.sayHello();
            
        }
    
    }


    7.显然, 该代码首先获得了spring的applicationContext.xml(容器对象),然后从里面取出了一个id叫做user的bean对象,该bean已经在xml中配置了name信息,故调用sayHello函数也能出现相同的输出结果。

    二、当然,不是所有的属性都有一个确定的值,比如下面这个案例

    1. 创建项目myspring2并导入spring开发包

    2. 新建类Dog:

    package com.service;
    
    public class Dog {
        private String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }

    3.新建类User:

     
    
    package com.service;
    
    
    public class User{
        private String name;
        private Dog dog;
        
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
        
        public Dog getDog() {
            return dog;
        }
    
        public void setDog(Dog dog) {
            this.dog = dog;
        }
    
        public void show(){
            System.out.println(name+"有一只狗"+dog.getName());
            
        }
    }

    4.配置applicationContext.xml,此时Dog类好配置,注意User类的配置

    <?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-3.0.xsd">
        
        <bean id="user" class="com.service.User">
            <property name="name" value="小明"/>
            <property name="dog" ref="dog"/>
        </bean>
        <bean id="dog" class="com.service.Dog">
            <property name="name">
                <value>旺财</value>
            </property>
        </bean>
        
    
    
    </beans>


    5.ref="dog"表示,该属性值参考于另一个bean,名叫dog

    6.此时编辑运行Test.java:

    package com.test;
    
    
    import org.springframework.beans.factory.BeanFactory;
    import org.springframework.beans.factory.xml.XmlBeanFactory;
    import org.springframework.core.io.ClassPathResource;
    
    import com.service.User;
    
    
    public class Test {
        
        public static void main(String[] args) {
            ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
            User user=(User) ac.getBean("user");
            user.show();
        }
        
    }


    7.运行结果:控制台打出 小明有一只狗旺财

    三、通过以上两个案例,我们还看不出到底spring有什么好处,Spring开发提倡接口编程,配合ioc(或者叫di),可以达到解耦的目的,举例说明:

    1. 新建项目myspring3,导入spring开发包

    2. 新建接口ChangeLetter

    package com.myz.inter;
    
    public interface ChangeLetter {
        public String change();
    }


    3. 新建类UpperLetter,实现ChangeLetter接口,将字符串全部转为大写

    package com.myz.inter;
    
    public class UpperLetter implements ChangeLetter{
        private String str;
        
        public String getStr() {
            return str;
        }
    
        public void setStr(String str) {
            this.str = str;
        }
    
        @Override
        public String change() {
            // TODO Auto-generated method stub
            return str.toUpperCase();
        }
    
    }


    4. 同理新建类LowwerLetter,将字符串全部转为小写

    package com.myz.inter;
    
    public class LowwerLetter implements ChangeLetter {
        private String str;
        
        public String getStr() {
            return str;
        }
    
        public void setStr(String str) {
            this.str = str;
        }
    
        @Override
        public String change() {
            // TODO Auto-generated method stub
            return str.toLowerCase();
        }
    }


    5.配置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-3.0.xsd">
    
        <bean id="changeLetter" class="com.myz.inter.UpperLetter">
            <property name="str" value="aBcD"/>
        </bean>
    </beans>

    6.main函数测试

    package com.myz.test;
    
    import org.springframework.context.ApplicationContext;
    
    import com.myz.inter.ChangeLetter;
    import com.util.ApplicationContextUtil;
    
    public class Test {
        public static void main(String[] args) {
            ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
            ChangeLetter str = (ChangeLetter) ac.getBean("changeLetter");
            System.out.println(str.change());
     }


    7.控制台输出:ABCD

    8.而我们如果我们突然想要字符串的小写了,而不是大写,仅仅需要修改一点点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-3.0.xsd">
    
        <bean id="changeLetter" class="com.myz.inter.LowwerLetter">
            <property name="str" value="aBcD"/>
        </bean>
    </beans>

    项目源码:链接:https://pan.baidu.com/s/1kVy3t7T 密码:byad

  • 相关阅读:
    JAVA传值与传址
    JAVA中的栈和堆
    for语句输出图形
    Linux下ps命令详解(转载)
    BMC介绍
    JVM 优化、内存泄露排查、gc.log 分析方法等(转载)
    动态从zookeeper读取kafka信息
    centos 查看文件系统类型
    TCPdump抓包命令详解
    Linux Tab键自动补齐
  • 原文地址:https://www.cnblogs.com/myz666/p/8098201.html
Copyright © 2020-2023  润新知