Spring第一个程序
国际惯例第一个Spring程序Hello Spring
在用spring开发的时候不要忘了添加jar报,最基本的四个jar包(现在Spring官网推荐使用Maven的形式来下载jar包,这里就直接下载使用):
spring-beans-4.0.5.RELEASE.Jar
spring-context-4.0.5.RELEASE.jar
spring-core-4.0.5.RELEASE.jar
sprig-excpression-4.0.5.RELEASE.jar
commons-logging-1.2.jar
在没有用Spring之前获取JavaBean对象实例是通过关键字new
来实现对象的初始化的,以下代码是一个JavaBean:
public class Hello {
private String name;
public void setName(String name) {
this.name = name;
}
public void say() {
System.out.println("hello"+name);
}
}
在主函数main
方法里获取该对象的实力并初始化对象
public static void main(String[] args){
Hello hello = new Hello();
hello.setName("Spring");
hello.say();
}
输出结果是:hello Spring
原始获取JavaBean对象是同伙new
关键字来实现对象初始化的创建,如果业务不同需求不同就会有很多new
的实例对象创建,即消耗内存空间又造成代码的耦合度高,代码量大效率底下,所有使用Spring的IOC容器
来创建和管理JavaBean可以大大减少代码的耦合,提高代码的质量和效率。
创建Spring的IOC容器
在Java项目类路径src
下创建Spring的ioc容器SprigBean.xml
由Spring容器来管理Java类:(生成xml格式可以在下载Spring资源中的scheme
文件夹下找。或者在eclipse上安装Spring插件亦或下载Spring版的开发工具Spring Tool Suite便于代码编写的效率)
<?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">
<bean id="hello" class="springdemo.Hello">
<property name="name" value="Spring"></property>
</bean>
</beans>
<bean>
标签中的#id#
表示交给Spring容器管理的类的唯一标识,class
属性的值为java类的全路径(通过反射原来找到该java类),这样这个Hello类就交给了spring容器管理了,id的命名规范一般用类名的首字母小写来表示。
<property>
节点标签设置属性,可以理解成Set方法给java的属性进行赋值操作,name
是但前要赋值的属性名称,value
是要给属性赋的值,一切工作就绪该Hello类就归Spring容器管理了
运行程序
public class Main {
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("SpringBeans.xml");
Hello hello = (Hello) ac.getBean("hello");
hello.say();
}
}
通过关键字new
来创建ApplicationContext
接口的实现类ClassPathXmlApplicationContext
对象,默认加载类路径下的xml文件,文件位SpringBeans.xml
然后调用该对象方法:getBean()
获取该类对象的唯一标识得到该类对象的实例,然后调用say()
方法
运行结果:Run as:hello Spring
程序分析:
spring容器通过class中的Java的全类名通过反射机制脚在类,给这个类起了id="hello"
的唯一标识,此时Spring底层代码默认加载该Java类的无参构造方法进行类的初始化操作,又通过<property>
子节点给该类执行set赋操作。从而实例化了Bean