JavaWeb——Spring

  • Spring 是一个开源框架,使用 Ioc(控制反转)和 AOP(面向切面编程)两种先进技术,极大简化了企业级开发的复杂度。

一、Spring 基础

1、Spring 的组成

  • Spring 框架主要由核心模块、Context模块、AOP模块、DAO模块、O/R映射模块、Web模块和MVC模块组成。
  • 核心模块是 Spring 的核心容器,实现了 IoC 模式、Spring 框架的基础功能,其中 BeanFactory 类是核心类,负责管理和配置 JavaBean;通过 Factory 模式实现 Ioc 容器即依赖注入。
  • Context 模块继承了核心类,同时增加了事件处理、国际化、资源装载、透明装载以及数据校验等功能;提供了框架式的 bean 的访问方式和很多企业级的功能,如定时任务调度。
  • Spring 提供了用标准 Java 语言根据 AOP 联盟的 API 编写的 AOP 框架,集成了所有的 AOP 功能,通过事务管理可以将任意 Spring 管理的对象 AOP 化,使应用程序排开 EJB 的复杂性的同时拥有 EJB 的关键功能。
  • DAO 模块提供了 JDBC 的抽象层,简化数据库厂商的异常错误,提供对声明式事务和编程式事务的支持。
  • 该模块提供了对现有 ORM 框架的支持。
  • 该模块建立在 Context 模块的基础之上,提供了 Servlet 监听器的 Context 和 Web 应用的上下文;对现有的 Web 框架如 JSF、Tapestry、Struts 等提供了集成。
  • 建立在 Spring 核心功能之上,拥有 Spring 框架的所有特性,能够适应多种视图、模板技术、国际化和验证服务,实现控制逻辑和业务逻辑清晰地分离。

2、Spring 简单示例

  • 在 Spring 项目的 src 目录里的适当文件夹(beanset)新建一个 JavaBean,代码如下:
//IntelliJ IDEA
//Sprin01
//Student
//2019/12/21
// Author:御承扬
//E-mail:2923616405@qq.com

package com.myCode.beanSet;

public class Student {
    private String name;
    private String age;
    private String sex;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
}
  • 接着在 src 目录下新建一个 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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean name="student" class="com.myCode.beanSet.Student">
    <property name="name" value="御承扬"/>
    <property name="age" value="21"/>
    <property name="sex" value="男"/>
</bean>
</beans>
  • 最后在 src 目录下新建一个 main 目录,并在 main 目录下新建一个 Manager.java,代码如下:
//IntelliJ IDEA
//Sprin01
//Manager
//2019/12/21
// Author:御承扬
//E-mail:2923616405@qq.com

package com.myCode.main;


import com.myCode.beanSet.Student;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;

public class Manager {
    public static void main(String[] args){
        Resource resource = new ClassPathResource("applicationContext.xml");
        BeanFactory factory = new XmlBeanFactory(resource);
        Student student = (Student) factory.getBean("student");
        System.out.println("学生姓名:"+student.getName());
        System.out.println("学生年龄:"+student.getAge());
        System.out.println("学生性别:"+student.getSex());
    }
}
  • 运行结果如下:
1月 11, 2020 4:57:26 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [applicationContext.xml]
学生姓名:御承扬
学生年龄:21
学生性别:男