首页 > 代码库 > Spring框架

Spring框架

 

一、spring框架概念

  spring是众多开源java项目中的一员,基于分层的javaEE应用一站式轻量级开源框架,主要核心是Ioc(控制反转/依赖注入) 与Aop(面向切面)两大技术,实现项目在开发过程中的轻松解耦,并极大的提高项目的开发效率。

   在项目中引入spring立即可以带来下面的好处 降低组件之间的耦合度,实现软件各层之间的解耦。可以使用容器提供的众多服务,如:事务管理服务、消息服务等等。当我们使用容器管理事务时,开发人员就不再需要手工控制事务.也不需处理复杂的事务传播。 容器提供单例模式支持,开发人员不再需要自己编写实现代码。 容器提供了AOP技术,利用它很容易实现如权限拦截、运行期监控等功能。

二、spring的七大模块

技术分享

组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。

  1. 核心容器Spring Core: 核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC) 思想将应用程序的配置和依赖性规范与实际的应用程序代码分开。
  2. Spring 上下文Spring Context:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。
  3. Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向切面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,就可以将声明性事务管理集成到应用程序中。
  4. Spring DAO:JDBC DAO  抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。
  5. Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。
  6. Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。
  7. Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。

 

思考:Bean 是如何被实例化的?---工厂模式(简单模拟实现工厂模式)

简单工厂模式:抽象产品角色,具体产品角色,工厂角色

三、Spring  Ioc实例化bean对象的三种方式

    1、构造器的方式实例化bean对象

    技术分享

    

    2、静态工厂方法方式实例化bean(了解即可)

      特点:

        I.要有该工厂类及工厂方法 

        II.工厂方法为静态的

 技术分享

    

    3、 实例化工厂方式创建bean(了解即可)      

        相比较静态工厂实现

        I.工厂方法为非静态方法

        II.需要配置工厂bean,并在业务bean中配置factory-bean,factory-method属性

      技术分享

spring三种实例化bean的方式比较

    方式一:通过bean的缺省构造函数创建,当各个bean的业务逻辑相互比较独立的时候或者和外界关联较少的时候可以使用。

    方式二:利用静态factory方法创建,可以统一管理各个bean的创建,如各个bean在创建之前需要相同的初始化处理,则可用这个factory方法险进行统一的处理等等。

    方式三:利用实例化factory方法创建,即将factory方法也作为了业务bean来控制,1可用于集成其他框架的bean创建管理方法,2能够使bean和factory的角色互换。

     开发中项目一般使用一种方式实例化bean,采用第一种方式最好,交给spring托管,使用时直接拿来使用即可。另外两种了解即可

 四、Spring  Ioc 4种注入方式

  1)Set注入

   xml配置(同时 spring 也提供了对于基本数据类型的set注入方式)

    技术分享

    java类

     

1 package com.wisezone.dao;
2 
3 public class UserDao {
4     
5     public void save(){
6         System.out.println("保存用户记录!");
7     }
8 }
 1 package com.wisezone.service;
 2 
 3 import com.wisezone.dao.UserDao;
 4 
 5 public class UserService {
 6     
 7     private UserDao userDao;
 8     
 9     private Integer age;//年龄
10     
11     private boolean sex;//性别
12     
13     private String name;//姓名
14     
15     
16     public void setAge(Integer age) {
17         this.age = age;
18     }
19 
20     public void setSex(boolean sex) {
21         this.sex = sex;
22     }
23 
24     public void setName(String name) {
25         this.name = name;
26     }
27 
28     public void setUserDao(UserDao userDao) {
29         this.userDao = userDao;
30     }
31 
32     public String save(){
33         System.out.println("age:"+age+"--->sex:"+sex+"--->name:"+name);
34         userDao.save();
35         return "hello spring";
36     }
37 }
 1 package com.wisezone.test;
 2 
 3 import static org.junit.Assert.*;
 4 
 5 import org.junit.Test;
 6 import org.springframework.context.ApplicationContext;
 7 import org.springframework.context.support.ClassPathXmlApplicationContext;
 8 import org.springframework.context.support.FileSystemXmlApplicationContext;
 9 
10 import com.wisezone.service.UserService;
11 
12 public class TestUserService {
13 
14     @Test
15     public void test() {
16         /**
17          * 1、启动容器
18          * 2、获取bean
19          * 3、调用bean方法,打印信息
20          */
21         //1、传入xml  启动spring 容器
22         ApplicationContext ac  = new ClassPathXmlApplicationContext("beans.xml");
23         
24         //2、获取bean 
25         UserService userService = (UserService) ac.getBean("userService");
26         
27         //3、调用bean方法,打印信息
28         System.out.println(userService.save());
29     }
30 
31 }

结果:

  技术分享

 

Spring框架