一、spring入门案例

来源:互联网 发布:php erp管理系统 编辑:程序博客网 时间:2024/05/18 02:16

一、什么是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"?><beansxmlns="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.显然, 该代码首先获得了springapplicationContext.xml(容器对象),然后从里面取出了一个id叫做userbean对象,该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"?><beansxmlns="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;}@Overridepublic String change() {// TODO Auto-generated method stubreturn str.toUpperCase();}}

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

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

5.配置xml(将字符串转换成大写)

<?xml version="1.0" encoding="UTF-8"?><beansxmlns="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"?><beansxmlns="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