spring几乎每个项目都用到了,然而自己也只是会用而已。所以决定重新捡起来学习一下spring,并且把自己的学习过程记录下来,只是整理而已,并非全部原创。
轻量级:spring是非侵入性的-也就是spring开发应用中的对象可以不依赖spring的API。
依赖注入(IOC):spring核心思想之一, spring提供了三种注入方式,set注入,构造方法注入,接口注入。
面向切面(AOP): spring核心思想之一。在面向对象编程(OOP)思想中,我们将事物纵向抽象成一个个的对象。而在面向切面编程中,我们将一个个对象某些类似的方面横向抽象成一个切面,对这个切面进行一些如权限验证,事物管理,记录日志等公用操作处理的过程就是面向切面编程的思想。
容器:可以把spring看做一个容器,因为它可以管理应用对象的生命周期。
框架:spring实现了使用简单的组件配置组合成一个复杂的应用,在spring中可以使用xml和java注解组合这些对象。
一站式:在IOC和AOP的基础上,spring可以整合各种优秀的框架(如springMVC,hibernate,mybatis等 后续再上整合demo)实际上spring自身也提供了展现层springMVC和和持久层JDBC。
简单的了解之后,直接新建一个工程体验下,我这边使用的开发工具是myeclipse。
新建一个空的javaproject。
配置spring环境。
配置过程 http://jingyan.baidu.com/article/2a138328a9b186074a134f2f.html
编写测试类
运行测试
程序结构如下
TestSpring.java的代码
package com.kaola.test; public class TestSpring { /** 姓名 **/ private String name; /** 年龄 **/ private int age; public TestSpring() { System.out.println("created!"); } public String getName() { return name; } public void setName(String name) { System.out.println("set!"); this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "TestSpring [name=" + name + ", age=" + age + "]"; } public TestSpring(String name, int age) { super(); this.name = name; this.age = age; } }
applicationContext.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" 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.1.xsd"> <bean id="testSpring" class="com.kaola.test.TestSpring"> <property name="name" value="kaola"></property> </bean> </beans>
TestMain.java 内容
package com.kaola.test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class TestMain { public static void main(String[] args) { // 创建IOC容器 ApplicationContext cxt = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"}); TestSpring testSping = (TestSpring) cxt.getBean("testSpring"); System.out.println(testSping); } }
运行结果:
结果分析:
从运行结果可以看出来 spring在创建bean的时候,用set注入的方法把值赋值给name了。