spring.jpg
国际惯例第一个 Spring 程序 Hello Spring
在用 spring 开发的时候不要忘了添加 jar 报, 最基本的四个 jar 包 (现在 Spring 官网 https://projects.spring.io/spring-framework/ 推荐使用 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 插件 https://spring.io/tools/sts/all 亦或下载 Spring 版的开发工具 Spring Tool Suite https://spring.io/tools/sts/ 便于代码编写的效率)
- <?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
来源: http://www.jianshu.com/p/8e2d155bd43d