Spring到底是什么,包括哪些内容(一)
先从两个代码示例开始:
⒈、正常的Java代码执行模式:
⑴、编写一个正常的Java类(包括类变量以及方法):
public class HelloWorld {
//消息
private String Message;
//获取消息
public void getMessage() {
//输出消息
System.out.print("Your Message"+":"+Message);
}
//设置消息
public void setMessage(String message) {
//设置消息内容(消息内容初始化)
Message = message;
}
}
⑵、测试:
public class Test {
public static void main(String[] args) {
//通过关键字"new"创建类HelloWorld对象
HelloWorld hello = new HelloWorld();
//设置消息内容为"hello"
hello.setMessage("hello");
//输出消息内容
hello.getMessage();
}
}
结果示例:
2、使用Spring"控制反转"的Java代码执行模式(也称为"依赖注入"):
Spring的环境搭建在此处省略,可关注后续博文更新。
⑴、编写一个正常的Java类(包括类变量以及方法):
同上。
⑵、在Spring配置文件配置步骤⑴中的类:
<?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-3.0.xsd">
//通过Spring配置文件的<Bean>标签配置类helloworld
<bean id="helloworld" class="com.Test.www.HelloWorld">
</bean>
</beans>
⑶、测试:
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
//注解,表示已经废弃,不再使用
@SuppressWarnings("deprecation")
public class Test {
public static void main(String[] args) {
//注解,表示已经废弃,不再使用
@SuppressWarnings("deprecation")
//创建一个容器对象(容器的来源是XML文件"Bean.xml")
XmlBeanFactory factory = new XmlBeanFactory
(new ClassPathResource("Bean.xml"));
//从容器中获取一个名为"helloworld"的对象
HelloWorld hello = (HelloWorld) factory.getBean("helloworld");
//设置消息内容为"hello"
hello.setMessage("hello");
//输出消息内容
hello.getMessage();
}
}
结果示例:
两种模式的效果是一样的,只不过模式二比模式一步骤更复杂一些。
总结以上两种模式:
⒈、正常的Java代码执行模式:
①、编写一个简单的Java类(也称为POJO)。
②、通过关键字"new"创建类的对象并调用方法获得结果(主动创建对象)。
2、使用Spring"控制反转"的Java代码执行模式(也称为"依赖注入"):
①、编写一个简单的Java类(也称为POJO)。
②、在Spring的专有配置文件中配置这个类(类路径赋值给class属性,同时设置唯一的id)。
③、将Spring的专有配置文件作为参数传入容器类(XmlBeanFactory,除了这个容器类,还有其它容器类)创建一个容器对象。
④、通过唯一id从Spring容器中获取目标对象并调用方法获得结果。
由模式一的主动创建对象变为了模式二的从容器中获取对象。
从Spring应用的广泛程度就知道模式二比模式一更受欢迎。
有两个问题随之而来,一个主要问题,一个次要问题。
**主要问题:**为什么模式二比模式一更受欢迎?
**次要问题:**模式二的对象虽然从容器中获取,那么容器会在什么时候创建对象(在逐渐深入学习Spring后可以发现,Spring的配置文件中不但包括了对象的信息,还包括了对象之间的依赖关系信息,所以创建对象不但包括创建对象本身,还包括创建对象之间的依赖关系)?从上面的总结能得出两个选择:
①、创建容器对象的时候创建。
②、根据唯一id获取对象的时候创建。
在下一篇博文中将详细解释以上两个问题。
PS:时间有限,有关Spring的内容会持续更新!今天就先写这么多,如果有疑问或者有兴趣,可以加QQ:2649160693,并注明优快云,我会就博文中有疑义的问题做出解答。同时希望博文中不正确的地方各位加以指正。