Java Spring

前言

  • Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好、易于测试、可重用的代码。

  • Spring 框架是一个开源的 Java 平台,它最初是由 Rod Johnson 编写的,并且于 2003 年 6 月首次在 Apache 2.0 许可下发布。

  • Spring 是轻量级的框架,其基础版本只有 2 MB 左右的大小。

  • Spring 框架的核心特性是可以用于开发任何 Java 应用程序,但是在 Java EE 平台上构建 web 应用程序是需要扩展的。

  • Spring 官网

  • Spring 教程

  • Spring 快速入门

1、Spring

  • Spring 是一个基于 IOC 和 AOP 的结构 J2EE 系统的框架,目标是使 J2EE 开发变得更容易使用,通过启用基于 POJO 编程模型来促进良好的编程实践。

  • Spring MVC 和 Spring Boot 都属于 Spring,Spring MVC 是基于 Spring 的一个 MVC 框架,而 Spring Boot 是基于 Spring 的一套快速开发整合包。

1.1 配置

  • Spring 配置:applicationContext.xml 是 Spring 的核心配置文件。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?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:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <bean name="c" class="com.how2java.pojo.Category">
    <property name="name" value="category 1" />
    </bean>

    </beans>
  • 通过关键字 c 即可获取 Category 对象,该对象获取的时候,即被注入了字符串 “category 1“ 到 name 属性中。

    1
    2
    3
    4
    5
    6
    7
    public static void main(String[] args) {
    ApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "applicationContext.xml" });

    Category c = (Category) context.getBean("c");

    System.out.println(c.getName());
    }
  • 基本原理:

    • 传统的方式:

      • 通过 new 关键字主动创建一个对象。
    • IOC 方式:

      • 对象的生命周期由 Spring 来管理,直接从 Spring 那里去获取一个对象。

1.2 IOC / DI

  • IOC(Inversion Of Control)反转控制。是 Spring 的基础,简单说就是创建对象由以前的程序员自己 new 构造方法来调用,变成了交由 Spring 创建对象。就像控制权从本来在自己手里,交给了 Spring。

  • DI(Dependency Inject)依赖注入。简单地说就是拿到的对象的属性,已经被注入好相关值了,直接使用即可。

  • 注解方式 IOC/DI:告诉 Spring 要用注解的方式进行配置。

    1
    2
    <!-- 告诉 Spring 要用注解的方式进行配置 -->
    <context:annotation-config />
    1
    2
    <!-- 告诉 Spring,bean 都放在 com.how2java.pojo 这个包下 -->
    <context:component-scan base-package="com.how2java.pojo" />
关键字 介绍
@Autowired
@Resource
@Component 表示这是一个 bean,由 Spring 进行管理

1.3 注入对象

  • 注入对象:使用 ref 来注入另一个对象。

    1
    2
    3
    4
    5
    6
    7
    <bean name="c" class="com.how2java.pojo.Category">
    <property name="name" value="category 1" />
    </bean>
    <bean name="p" class="com.how2java.pojo.Product">
    <property name="name" value="product1" />
    <property name="category" ref="c" />
    </bean>

2、AOP

  • AOP(Aspect Oriented Program)面向切面编程。在面向切面编程的思想里面,核心业务功能和切面功能分别独立进行开发,然后把切面功能和核心业务功能 “编织” 在一起,这就叫 AOP。周边功能在 Spring 的面向切面编程思想里,即被定义为切面。

    1
    2
    3
    4
    5
    6
    7
    <aop:config>
    <aop:pointcut id="loggerCutpoint" expression="execution(* com.how2java.service.ProductService.*(..))" />

    <aop:aspect id="logAspect" ref="loggerAspect">
    <aop:around pointcut-ref="loggerCutpoint" method="log"/>
    </aop:aspect>
    </aop:config>
  • 在面向切面编程的思想里面,把功能分为核心业务功能,和周边功能。这种能够选择性的,低耦合的把周边和核心业务功能结合在一起的编程思想,就叫做切面编程。

    • 所谓的 核心业务,比如 登陆,增加数据,删除数据都叫核心业务。
    • 所谓的 周边功能,比如 性能统计,日志,事务管理等等。
  • 注解方式 AOP

    1
    2
    3
    4
    5
    6
    <!-- 扫描包 com.how2java.aspect 和 com.how2java.service,定位业务类和切面类 -->
    <context:component-scan base-package="com.how2java.aspect" />
    <context:component-scan base-package="com.how2java.service" />

    <!-- 找到被注解了的切面类,进行切面配置 -->
    <aop:aspectj-autoproxy />
关键字 介绍
@Aspect 表示这是一个切面
@Component 表示这是一个 bean,由 Spring 进行管理
@Around 表示这个类中的所有方法进行切面操作

3、Spring MVC

  • Spring MVC 是基于 Spring 的一个 MVC 框架。

  • 主要用于开发 WEB 应用和网络接口,它是 Spring 的一个模块,通过 Dispatcher Servlet, ModelAndView 和 View Resolver,让应用开发变得很容易。

4、Spring Boot

  • Spring Boot 是基于 Spring 的一套快速开发整合包。

  • 它的目的在于实现自动配置,降低项目搭建的复杂度,如需要搭建一个接口服务,通过 Spring Boot,几行代码即可实现。

文章目录
  1. 1. 前言
  2. 2. 1、Spring
    1. 2.1. 1.1 配置
    2. 2.2. 1.2 IOC / DI
    3. 2.3. 1.3 注入对象
  3. 3. 2、AOP
  4. 4. 3、Spring MVC
  5. 5. 4、Spring Boot
隐藏目录