一、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

 

posted @ 2017-12-24 15:40  菜鸡蔡文姬  阅读(177)  评论(0编辑  收藏  举报