Spring开源框架

一、了解Spring七个模块:

Spring核心由7个模块组成 :

核心容器、AOP模块、对象/关系映射集成模块ORM、JDBC抽象和DAO模块、Spring的web模块、运用上下文Ccontext模块、Spring的MVC框架,

1、核心模块:提供了依赖注入(Dependency)特征来实现容器对bean的管理。最基本的概念:BeanFactory,它是任何Spring运用的核心。是工厂模式的一个实现,它使用IoC将运用配置个依赖说明从实际的运用代码分离出来。核心容器提供Spring框架的基本功能。使用控制反转IOC模式将运用程序的配置和依赖性规范与实际的运用程序代码分开。

2、AOP模块:即面向切面编程技术,允许通过分离运用的业务逻辑与系统服务(如安全和事物管理)进行内聚性的开发。运用对象只实现他们应该做的--------完成业务逻辑,仅此而已。他们并不负责系统级关注点,如日志或事物支持。

Spring的AOP模块也将元数据编程引入Spring。使用Spring的元数据支持,可以为源代码增加注释,指示Spring在何处以及如何运用切面函数。

3、对象/关系映射集成模块ORM:Spring没有自己实现ORM框架,而是集成了几个流行的ORM产品,如hibernate、JDO和iBATIS等。可以利用Spring对这些模块提供事务支持。

4、JDBC抽象和DAO模块:Spring不仅集成了几个ORM产品,也可以不选择这几款产品,因为Spring提供了JDBC和DAO模块。该模块对现有的JDBC技术进行了优化,可以保持数据库访问代码干净简洁,并且可以防止因关闭数据库资源失败而引起的问题。

5、Spring的web模块:Web上下文模块建立于运用上下文模块之上,提供了一个适合于Web运用的上下文。另外,这个模块还提供了一些面向服务的支持。例如:实现文件上传的mulitipart请求。他也提供了Spring和其他Web框架的集成,如Struts、WebWork。

6、运用上下文Ccontext模块:核心模块的BeanFactory使Spring成为一个容器,而上下文模块使他成为一个框架。Web上下文模块建立于运用上下文模块之上,提供了一个适合于Web运用的上下文。另外,这个模块还提供了一些面向服务支持这个模块扩展了BeanFactory的概念,增加了对国际化(I18N)消息、事件传播及验证的支持。

另外,这个模块提供了许多企业服务,如电子邮件、JNDI访问、EJB集成、远程以及时序调度服务等。也包括对模块板框架,如Velocity和FreeMarker集成的支持。

7、Spring的MVC框架:Spring可以很容易地与其他MVC框架集成,如Struts2,但Spring的MVC框架使用IOC对控制逻辑和业务对象提供了完全的分离。

                                                                                                                                                     

为什么使用Spring?

.方便耦合,简化开发。

.AOP编程的支持。

.声明事务的支持。

.很好地集成了其他比较成熟的开源产品。

.消除规定多样的定制属性文件的需要,用一致的配置操作贯穿整个运用和项目。

.培养良好的编程习惯,利用接口代替Class减弱编程成本,降至最少。

.提供了一致的数据访问框架,无论是JDBC,还是用像Hiberbate一样的O/Rmapping的产品。

                                                        

Spring入门示例

1、编写一个普通的Java类(JavaBean)

package bean;
 
public class Hello {
public void sayHello(String name){
System.out.println("Hello"+name);
}
}
 
2、在Spring配置文件applicationContext.xml
将JavaBean由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-2.5.xsd">
<!-- 在spring中配置bean的id以及所对应的类 -->
<bean id="hello" class="bean.Hello"></bean>
</beans>
3、Web.xml中的配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
的前端控制器 -->
  <servlet>
    <servlet-name>springDispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
设置自己定义的控制器xml文件
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
配置文件结束 -->
  
拦截设置 -->
  <servlet-mapping>
    <servlet-name>springDispatcherServlet</servlet-name>
由SpringMVC拦截所有请求 -->
    <url-pattern>/</url-pattern>
  </servlet-mapping>
文件存放在src下的配置
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
</web-app>
注意:这里值得注意:applicationContext.xml该文件存放在src下时如下配置,如存放在WEB-INF下时,配置失败,探索中...。网上查的资料是如下配置的,试了不行:
文件存放在WEB-INF下的配置
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/applicationContext*.xml</param-value>
< /context-param>
 
4、如何使用Spring容器配置的Bean。
package bean.test;
 
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
 
import bean.Hello;
 
//使用Spring配置的Bean
public class Test {
public static void main(String[] args) {
/*读取Spring配置文件,创建一个Bean工厂*/
@SuppressWarnings("resource")
BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");
/**读取Spring容器一个称为hello的bean,Spring容器自动创建对象实例**/
Hello h = (Hello)factory.getBean("hello");
h.sayHello("张三");
}
}

 

启示:仔细观察Test实现,将有所领悟。