a )简介
Spring框架,可以解决对象创建以及对象之间依赖关系的一种框架,且可以和其他框架一起使用;Spring与Struts, Spring与hibernate (起到整合(粘合)作用的一个框架)
Spring提供了一站式解决方案:
1) Spring Core spring的核心功能: IOC容器, 解决对象创建及依赖关系
2) Spring Web Spring对web模块的支持。 可以与struts整合,让struts的action创建交给spring -spring mvc模式
3) Spring DAO Spring 对jdbc操作的支持 【JdbcTemplate模板工具类】
4) Spring ORM spring对orm的支持: 既可以与hibernate整合,【session】 也可以使用spring的对hibernate操作的封装
5) Spring AOP 切面编程
6) SpringEE spring 对javaEE其他模块的支持
下面来源
于百度图片
b)时序图
(来源百度)
是不是已经懵了,其实没那么深奥.先来做一个helloworld就明白了
c)开发步骤
spring各个版本中: 在3.0以下的版本,源码有spring中相关的所有包【spring功能 + 依赖包】 如2.5版本;
在3.0以上的版本,源码中只有spring的核心功能包【没有依赖包】 (如果要用依赖包,需要单独下载![还可以去老版本中找])
1) 源码, jar文件:spring-framework-3.2.5.RELEASE
commons-logging-1.1.3.jar 日志
spring-beans-3.2.5.RELEASE.jar bean节点
spring-context-3.2.5.RELEASE.jar spring上下文节点
spring-core-3.2.5.RELEASE.jar spring核心功能
spring-expression-3.2.5.RELEASE.jar spring表达式相关包
以上是必须引入的5个jar文件,在项目中可以用户库管理!
2) 核心配置文件: applicationContext.xml Spring配置文件:applicationContext.xml / bean.xml
不会写xml约束文件?没关系,有参考 该路径下 spring-framework-3.2.5.RELEASE\docs\spring-framework-reference\htmlsingle\index.html
这里还是给个示例:
1 <beans xmlns="http://www.springframework.org/schema/beans" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xmlns:p="http://www.springframework.org/schema/p" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xsi:schemaLocation=" 6 http://www.springframework.org/schema/beans 7 http://www.springframework.org/schema/beans/spring-beans.xsd 8 http://www.springframework.org/schema/context 9 http://www.springframework.org/schema/context/spring-context.xsd"> 10 11 </beans>
发现没spring约束是schema,上一篇随笔struts的约束是dtd.
先解决对象创建吧(剧透:可能整个项目你都看不到一个new关键字哦,这就是spring神奇的地方)
SpringIOC容器
IOC容器创建对象: 创建对象, 有几种方式:
1) 调用无参数构造器
2) 带参数构造器
3) 通过 property [setXxx()]方法初始化对象
1.无参初始化对象
略
2.有参数初始化对象
1 <?xml version ="1.0" encoding ="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:p="http://www.springframework.org/schema/p" 5 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> 8 <!-- 构造器初始化对象 9 1>实体类类中必须有对应的含参构造器 10 2>type 必须写全称 除基本类型外如 int 11 3>index从0开始 对应构造器的第一个参数 12 --> 13 <bean id="myUser2" class="test_spring.User"> 14 <constructor-arg index="0" type="java.lang.String" value="kangkang"></constructor-arg> 15 <constructor-arg index="1" type="java.lang.String" value="man"></constructor-arg> 16 <constructor-arg index="2" type="java.lang.String" value="456"></constructor-arg> 17 </bean> 18 </beans>
3.通过 property [setXxx()]方法初始化对象
1 <?xml version ="1.0" encoding ="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:p="http://www.springframework.org/schema/p" 5 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> 6 7 <!-- 设置属性"setXxx()"的初始化对象 8 推荐使用 理由:Javabean中正好对应有setXxx方法 9 --> 10 <bean id="myUser" class="test_spring.User"> 11 <property name="name" value="KingShing"/> 12 <property name="sex" value="man"/> 13 <property name="number" value="123"/> 14 </bean> 15 </beans>
代码:
1 package test_spring; 2 3 import org.springframework.beans.factory.BeanFactory; 4 import org.springframework.beans.factory.xml.XmlBeanFactory; 5 import org.springframework.context.ApplicationContext; 6 import org.springframework.context.support.ClassPathXmlApplicationContext; 7 import org.springframework.core.io.ClassPathResource; 8 import org.springframework.core.io.Resource; 9 10 public class App { 11 public static void test1(){ 12 /** 13 * 方式一 14 */ 15 //1.加载资源文件 16 Resource resource = new ClassPathResource("bean.xml"); 17 //2.创建工厂 18 BeanFactory bf = new XmlBeanFactory(resource); 19 //3.获取对象 20 User user1 = (User) bf.getBean("myUser"); 21 System.out.println(user1); 22 } 23 24 public static void test2(){ 25 /** 26 * 方式二 **推荐第二种** 27 */ 28 //1.加载资源并获得工厂 29 ApplicationContext context = new ClassPathXmlApplicationContext ("bean.xml"); 30 //2.获取对象 2.1 2.2 二选一,推荐使用2.1 31 //2.1 设置属性"setXxx()"的初始化对象 32 //User user2 = (User) context.getBean("myUser1"); 33 //2.2 构造器初始化对象 34 User user3 = (User) context.getBean("myUser2"); 35 //System.out.println(user2); 36 System.out.println(user3); 37 38 } 39 public static void main(String arg[]){ 40 //test1(); 41 test2(); //User [name=kangkang, sex=man, number=456]
42 }
43 }
目录结构:
未完待续......