上篇说到:Spring被开发的核心目的是为了简化java开发,下面我们通过一个简单的例子来说明Spring是怎么简化开发的
在src下新建一个Hello的java 包,然后在Hello包下写一个只有一个sayHi方法的Hello接口,和实现Hello接口的HelloSpring类
代码如下:
package Hello;
public interface Hello {
public void sayHi();
}
package Hello;
public class HelloSpring implements Hello{
@Override
public void sayHi() {
System.out.println("Hello Spring");//重载sayHi()方法
}
}
正常情况下,如果我们要调用HelloSpring,一般会这样调用:
package Hello;
public class HelloTest {
public static void main(String[] args) {
Hello hello = new HelloSpring();
hello.sayHi();
}
}
如果只有一两个类还不要紧,如果有很多个类,就要创建很多个类的实例,然后才能通过实例调用方法。
如果运用Spring的特性,需要怎么写呢?
首先哦我们需要在src文件夹下,新建一个xml格式的配置文件,来配置我们的写的类(在Spring里也就叫bean),名字可以随便起,在这里我新建了一个Beans.xml (注意不要把Beans.xml放在java包下,要放在src文件夹目录下)
Spring是一个基于容器的框架,这些xml文件就是Spring的一个个容器,现在我们已经得到一个空容器,因为我们什么都没有往里面配置。
如果不是用IEDA搭载的环境,而是用其他,如eclipse,可以new 一个file ,然后把文件名设置为 bean.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>
IEDA 已经帮我们写好了框架。我们暂时不用管都是什么意思。直接在这个xml文件里配置我们的HelloSpring类
来简单解释下,
id是指我们给HelloSpring类起得具有标识性的“名字”,当我们需要获取这个bean的时候,需要通过这个名字来找到它
class可以理解成bean在项目中的相对位置,你也可以把它当成bean的类型来理解(我觉得还是理解成后者比较好)
容器已经配置好了,现在就们就来加载容器的内容
我就直接在上面的测试类修改一下
package Hello;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class HelloTest {
public static void main(String[] args) {
Hello hello = new HelloSpring();
hello.sayHi();
/*
* ClassPathXmlApplicationContext() 加载 xml配置文件并最终基于所提供的 API,它负责
* 处理创建并初始化所有的对象,即在配置文件中提到的beans。
*
* getBean() 方法来获得所需的 bean。即在xml配置文件里对应id的bean,返回一个实例化的对象
* */
ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
Hello helloSpring =(Hello) context.getBean("helloSpring");
helloSpring.sayHi();
}
}
现在我们运行 一下,看看结果,可以看到输出的是一样的结果,说明两种调用的方法时一致的。