Spring入门介绍

概述

  • 下载地址:https://repo.spring.io/release/org/springframework/spring/
  • spring是开源的轻量级框架
  • spring核心的主要两部分
    • AOP :面向切面编程,扩展功能而不修改源代码
    • IOC :控制反转,对象的创建通过spring配置来实现
  • spring是一站式框架
    • web :springMVC
    • service :IOC
    • dao :JDBC

IOC

IOC的底层原理

  • 创建xml配置文件,配置要创建对象的类
    <bean id="userSevice" class="com.ljw.service.UserService">
  • bean标签的属性
    • id:值不能有特殊字符
    • class:要配置的类的路径
    • scope:创建对象的方式
      • singleton:默认值,单例
      • prototype:多例
    • name:跟id类似,但可以有特殊字符
  • 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"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jdbc="http://www.springframework.org/schema/jdbc"
    xmlns:jee="http://www.springframework.org/schema/jee"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:util="http://www.springframework.org/schema/util"
    xmlns:jpa="http://www.springframework.org/schema/data/jpa"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
        http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.1.xsd
        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.1.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
        http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.1.xsd">
</beans>
  • 创建工厂类,使用dom4j解析xml配置文件+反射,得到该类的实例

属性注入(DI)

  • DI:依赖注入,向类里面的属性设置值
  • set方法
    1. 在类中定义该属性的set方法
    2. spring_context.xml 配置文件中配置相关的设置
  • 有参构造
    1. 定义有参构造方法
    2. spring_context.xml 配置文件中配置相关的设置
  • 对象属性注入
    1. 将要注入对象设置为类的属性
    2. spring_context.xml 配置文件中配置相关的设置
      spring_context.xml中的配置:

测试:

  • 复杂类型的注入

    1. Array
    2. List
    3. Map
    4. properties

Spring 的 bean 管理(注解)

  • 注解详情请查看文章:注解 @Annotation

    一、导入 jar 包

二、创建 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"
    xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- bean definitions here -->
</beans>

三、再 Spring 中开启注解扫描

  • 如果有多个包,就填写共有的包名

四、注解创建对象

4.1 创建对象有四个注解

  • @Component
  • @Controller
  • @Service
  • @Repository
  • 目前这四个注解的功能是一致的,都是创建对象,只是为了让标注类本身的用途清晰

4.2 创建对象的方式

  • @Scope(value="singleton") 单实例
  • @Scope(value="prototype") 多实例

五、注解注入属性

  1. 创建service类,创建dao类,再service中得到dao对象

    • 用注解创建 dao 对象和 service 对象

    • 再service类中创建dao类型的属性,并用注解注入对象,有两种方式
      第一种:@Autowired

    第二种:@Resource

    • 测试

AOP

一、AOP概念

  • AOP:面向切面(方面)编程
  • AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码

二、AOP原理

三、AOP操作术语

  • Joinpoint(连接点): 类里面可以被增强的方法,这些方法称为连接点(可以被增强的方法)
  • Pointcut(切入点):所谓切入点是指我们要对哪些Joinpoint进行拦截的定义.
  • Advice(通知/增强):所谓通知是指拦截到Joinpoint之后所要做的事情就是通知.通知分为前置通知,后置通知,异常通知,最终通知,环绕通知(切面要完成的功能,在方法之前和之后执行(比如:计算程序运行的时间))
  • Aspect(切面): 是切入点和通知(引介)的结合
  • Introduction(引介):引介是一种特殊的通知在不修改类代码的前提下, - Introduction可以在运行期为类动态地添加一些方法或Field.
  • Target(目标对象):代理的目标对象(要增强的类)
  • Weaving(织入):是把增强应用到目标的过程.
    • 把advice 应用到 target的过程
  • Proxy(代理):一个类被AOP织入增强后,就产生一个结果代理类

四、使用AspectJ实现AOP

1. 介绍

  • AspectJ不是Spring的一部分,是和Spring一起使用进行AOP操作

2. 实现AOP的两种方式

  • 基于AspectJ的XML配置
  • 基于AspectJ的注解方式

3. 实现步骤

  • AOP操作准备

    • 导入基本jar包和AOP相关的jar包
    • 导入AOP约束
    <?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" xsi:schemaLocation="
          http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
          http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!-- bean definitions here -->
    </beans>
  • 使用表达式配置切入点
    • 切入点:实际增强的方法
    • 常用的表达式:execution 表达式
  • 增强类
package com.ljw.spring.annotation;

import org.aspectj.lang.ProceedingJoinPoint;
import org.springframework.stereotype.Component;

@Component(value="userAdvice")
public class UserAdvice {

    /**
     * @description 前置通知
     */
    public void userBefore() {
        System.out.println("前置通知........");
    }

    /**
     * @description 后置通知
     */
    public void userAfter() {
        System.out.println("后置通知........");
    }

    /**
     * @description 环绕通知
     * @param proceedingJoinPoint
     * @throws Throwable
     */
    public void userAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
        // 方法之前
        System.out.println("方法之前..........");

        // 执行增强的方法
        proceedingJoinPoint.proceed();

        // 方法之后
        System.out.println("方法之后..........");
    }
}
  • 配置Spring配置文件

    • 导入约束
    • 配置AOP操作

Spring整合web项目

一、实现原理

  1. 通过 new 对象,功能可以实现,但效率很低
  1. 实现思想:把加载配置文件和创建对象过程,在服务器启动的时候完成
  2. 具体实现原理
    (1) ServletContext对象
    (2) 监听器
    (3) 具体步骤

    • 在服务器启动的时候,为每个项目创建一个ServletContext对象
    • 在 ServletContext 对象创建的时候,使用监听器可以监听 ServletContext对象什么时候创建
    • 当监听器监听到 ServletContext 对象创建的时候,加载 spring 配置文件,创建配置文件对象
    • 把创建出来的对象放到 ServletContext 域对象里面(setAttribute 方法)
    • 获取对象(getAttribute 方法)

知识点

ServletContext 对象

一、介绍

  • ServletContext官方叫servlet上下文。服务器会为每一个工程创建一个对象,这个对象就是ServletContext对象
  • 这个对象全局唯一,而且工程内部的所有servlet都共享这个对象。所以叫全局应用程序共享对象。

二、作用

  • 是一个域对象
  • 可以读取全局配置参数
  • 可以搜索当前工程目录下面的资源文件
  • 可以获取当前工程名字(了解)

三、域对象

  1. 域对象介绍
  • 域对象是服务器在内存上创建的存储空间,用于在不同动态资源(servlet)之间传递与共享数据。
  1. 怎样得到 ServletContext 对象
  • ServletContext servletContext = config.getServletContext();
  • ServletContext servletContext = this.getServletContext();
  1. 域对象方法
  • 凡是域对象都有如下三个方法

监听器 Listener

一、监听器模型

  • 事件:用户对组件的一个操作,或者说程序执行某个方法,称之为一个事件,如机器人程序执行工作。
  • 事件源:发生事件的组件就是事件源,也就是被监听的对象,如机器人可以工作,可以跳舞,那么就可以把机器人看做是一个事件源。
  • 事件监听器(处理器):监听并负责处理事件的方法,如监听机器人工作情况,在机器人工作前后做出相应的动作,或者获取机器人的状态信息。

二、执行步骤

  1. 给事件源注册监听器。
  2. 组件接受外部作用,也就是事件被触发。
  3. 组件产生一个相应的事件对象,并把此对象传递给与之关联的事件处理器。
  4. 事件处理器启动,并执行相关的代码来处理该事件。

execution表达式

一、语法

  • execution(<访问修饰符>?<返回类型><方法全名>(<参数>)<异常>)

二、常用的写法

  • execution(* com.ljw.spring.aop.User.add(..)) 对User类的add方法增强
  • execution(* com.ljw.spring.aop.User.*(..)) 对User类的所有方法增强
  • execution(* *.*(..)) 对所有方法增强
  • execution(* save*(..)) 对所有save开头的方法增强

原文地址:https://www.cnblogs.com/ljw1994/p/11820321.html

时间: 2024-11-07 22:29:14

Spring入门介绍的相关文章

Spring入门介绍(一)

Spring是一个轻量级控制反转(IOC)和面向切面(AOP)的容器框架,它主要是为了解决企业应用开发的复杂性而诞生的. 目的:解决企业应用开发的复杂性. 功能:使用基本的javaBean代替EJB. 范围:任何的java应用. Spring的起源 Spring的存在是因为他有一系列的得天独厚的优势: 1.它的定位领域是其他frameWork没有的. 2.Spring是全面的和模块化的. 3.它的设计是从底部帮助编写易于测试的代码 4.Spring是潜在的一站式解决方案. Spring的优点 g

Spring入门介绍-AOP(三)

AOP的概念 AOP是面向切面编程的缩写,它是一种编程的新思想.对我们经常提起的oop(面对对象编程)有一定的联系. AOP和OOP的关系 AOP可以说是oop的某一方便的补充,oop侧重于对静态的属性和方法组合为对象,使得逻辑更加清晰,而aop是是从动态角度考虑,处理过程中某个步骤或者阶段,是从动态角度考虑的. AOP的功能 主要处理事务,日志,安全,异常统计等功能. AOP的价值 AOP专门用于处理分布于各个各个模块中的交叉关注点的问题,在J2ee应用中.通常用AOP来处理一些具有横切性质的

Spring入门介绍-IOC(二)

浅谈IOC IOC(inversion of control)是Spring的核心,贯穿始终.所谓IOC 就是有Spring来控制对象的生命周期和对象间的关系. 传统开发模式:对象之间相互依赖 IOC开发模式:IOC控制对象之间的依赖 IOC的理论背景 IOC和DI(依赖注入) IOC是控制反转.原先对象之间的关系式相互引用的,相对耦合度很高,一个对象的损坏可能会影响许多的对象,对象对其他对象的引用是自己控制的,如果把所以控制权都交给一个外部的第三方,统一管理应用,就实现了控制反转,降低了耦合度

dubbo入门介绍及结合spring搭建(源码放送)

前言 关于dubbo的介绍网上有很多博文有入门级的说明,但在这里,将会提供给大家dubbo的入门介绍,dubbo结合spring项目的简单搭建,以及提供demo源代码的免费下载. dubbo的官方网址是:http://dubbo.io/ dubbo框架使用的demo源码下载地址:http://download.csdn.net/detail/fighterandknight/9514559 dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及

Spring Cloud入门介绍

       Spring Cloud介绍 一.Spring Cloud 是什么 Spring Cloud 为开发者提供了在分布式系统(如配置管理.服务发现.断路器.智能路由.微代理.控制总线.一次性 Token.全局锁.决策竞选.分布式会话和 集群状态)操作的开发工具 Spring Cloud 是一整套微服务的组件.工具集 Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心.消息总线.负载均衡.

DOJO开发: 入门介绍

决定写么这么一个前端框架的系列文章, 还是很需要勇气的. 因为从现在软件开发岗位分工来说, 我一是个标准的后台开发岗, 所以前端的知识(html, css, javascript)还是捉襟见肘的, 所以大家还是多多包涵下, 如果文中有什么问题, 请帮忙指出来. 一般很多后端的同学有这样的需求: 一个人要开发完一个完整的管理系统, 而又没有前端开发资源, 这时候只能一切靠自己了. 嗯, 做一个全栈工程师, 我骄傲!  首先我介绍下我的前端知识体系. 对于html, css, javascript的

spring 入门笔记(一)

最近学习spring 通过笔记形式加深自己对spring的理解,也希望能跟各位入门者分享和讨论. 一.下载spring 下载spring也费了不少功夫,目前还没从spring官网找到下载入口,我从下面的网站下载spring-framework-4.0.5.RELEASE. http://maven.springframework.org/release/org/springframework/spring/ 直接解压,如下: 二.导入额外的包 因为springframework里边包含的包还不全

spring 入门篇

spring 入门篇 相对于Hibernate(冬眠),Spring(春天),具有更多的诗意与希望的感觉,是为了解决传统J2EE开发效率过低.开发商之间不统一.没有真正实现“写一次到处使用”,它的优点有如下: 低侵入式设计,代码污染极低. 独立于各种应用服务,真正实现写一次到处都可以使用. 用户可选择的自由度高,用户可以选择部分或者是全部SPRING的功能,它并不是设计来取代其它框架,可以和其它的框架(如STRUTS.HIBERNATE)等结合极好. 面向接口的编程方式,使得代码的偶合度降到最低

Spring入门(一)— IOC、DI

一.Spring介绍 Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架.简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架. Spring是2003年兴起的一个轻量级的java框架, 由 Rod Johnson 在其编著的<Expert one on one J2EE design and development