三大框架 之 Spring(IOC控制反转、DI依赖注入)

时间:2022-06-05 23:40:03

目录

常用词汇

ORM(Object Relational Mapping)对象到关系的映射

AOP(Aspect Oriented Programming)面向切面编程

aspect

[ˈæspekt]

n.

方面;方向;

oriented

['ɔ:rɪəntɪd]

adj.

面向;定向的;以…为方向的;定方向

Proxy

代理服务器;即Proxy服务器;

cascade

级联;

interceptor

[ˌɪntəˈseptə(r)]

n.

拦截器

template

[ˈtempleɪt]

n.

样板;模板;型板;模框;标准

xmlns

命名空间;名字空间;名称空间

schema

[ˈskiːmə]

n.

提纲


left join与left outer join的区别

那就是没有区别

对,就是没有区别

left join 是left outer join的简写,left join默认是outer属性的。

https://zhidao.baidu.com/question/72568852.html

SQL LEFT JOIN 百度百科

LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。在某些数据库中, LEFT JOIN 也称为 LEFT OUTER JOIN。

Struts2的标签库导入

(1)在JSP页面中使用如下代码来导入Struts2标签库:

pStruts 2的所有标签库都放在/struts-tags这个Uri下面。因此可用如下代码导入:

<%@ taglib prefix=“s” uri=“/struts-tags”%>

(2)使用指定标签:

<s:abc .../>

IOC和DI的概念

  • IOC -- Inverse of Control,控制反转,将对象的创建权反转给Spring!!
  • DI -- Dependency Injection,依赖注入,在Spring框架负责创建Bean对象时,动态的将依赖对象注入到Bean组件中!!

DI和IOC的关系: DI不能单独存在,DI需要在IOC的基础上来完成.

这样做得好处:做到了单一职责,并且提高了复用性,解耦了之后,任你如何实现,使用接口的引用调用的方法,永远不需要改变

Spring

Spring概述

什么是Spring

  • Spring是一个开放源代码的设计层面框架
  • 他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。
  • Spring是于2003 年兴起的一个轻量级的Java 开发框架
  • 简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架

spring特点

1.方便解耦,简化开发

  • 通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。
  • 有了Spring,用户不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。

2.AOP编程的支持

  • 通过Spring提供的AOP功能,方便进行面向切面的编程,
  • 许多不容易用传统OOP实现的功能可以通过AOP轻松应付。

3.声明式事务的支持

  • 在Spring中,我们可以从单调烦闷的事务管理代码中解脱出来
  • 通过声明式方式灵活地进行事务的管理,提高开发效率和质量

4.方便程序的测试

  • 可以用非容器依赖的编程方式进行几乎所有的测试工作,在Spring里,测试不再是昂贵的操作,而是随手可做的事情。
  • 例如:Spring对Junit4支持,可以通过注解方便的测试Spring程序。

5.方便集成各种优秀框架

  • Spring不排斥各种优秀的开源框架,相反,Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Struts,Hibernate、Hessian、Quartz)等的直接支持。

6.降低Java EE API的使用难度

  • Spring对很多难用的Java EE API(如JDBC,JavaMail,远程调用等),提供了一个薄薄的封装层,通过Spring的简易封装,这些Java EE API的使用难度大为降低。

7.Java 源码是经典学习范例

  • Spring的源码设计精妙、结构清晰、匠心独运,处处体现着大师对Java设计模式灵活运用以及对Java技术的高深造诣。
  • Spring框架源码无疑是Java技术的最佳实践范例。如果想在短时间内迅速提高自己的Java技术水平和应用开发水平,学习和研究Spring源码将会使你收到意想不到的效果。

下载

下载地址

IOC

什么IOC

  • IOC: Inversion of Control(控制反转)
  • 控制反转:将对象的创建权反转给(交给)Spring

传统开发模式

业务和实现类过于紧密,底层业务要修改源代码

三大框架 之 Spring(IOC控制反转、DI依赖注入)

通过工厂可以实现,接口与实现业务的分离

三大框架 之 Spring(IOC控制反转、DI依赖注入)

在工厂内部使用配置文件加载

三大框架 之 Spring(IOC控制反转、DI依赖注入)

使用spring-IOC(需新建applicationContext.xml)

1.添加jar包

2.创建配置文件

​ 通常名称起为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">
</beans>



3.添加配置文件

三大框架 之 Spring(IOC控制反转、DI依赖注入)

4.测试使用

三大框架 之 Spring(IOC控制反转、DI依赖注入)

DI

依赖注入

  • 前提必须有IOC的环境
  • Spring管理这个类的时候才能将类的依赖的属性值注入(设置)进来
  • 依赖注入:给spring管理类当中依赖的属性,通过配置文件进行赋值的过程

传统方式

三大框架 之 Spring(IOC控制反转、DI依赖注入)

DI方式

1.实现类当中的属性要提供set方法

三大框架 之 Spring(IOC控制反转、DI依赖注入)

2.在配置文件当中配置依赖注入

三大框架 之 Spring(IOC控制反转、DI依赖注入)

3.测试

三大框架 之 Spring(IOC控制反转、DI依赖注入)

Spring的工厂类

BeanFactory

  • 老版本使用方式
  • 当调用getBean的时候才会创建实例对象

ApplicationContext

  • 新版本使用方式
  • 当加载配置文件时候就会创建实例对象

ApplicationContext实现类

ClassPathXmlApplicationContext加载类路径下的配置文件

三大框架 之 Spring(IOC控制反转、DI依赖注入)

FileSystemXmlApplicationContext加载文件系统下的配置文件

三大框架 之 Spring(IOC控制反转、DI依赖注入)

Bean相关配置

名称与标识

id
使用了约束中的唯一约束。里面不能出现特殊字符的
name
没有使用约束中的唯一约束。里面可以出现特殊字符

设置对象的生命周期方法

init-method
Bean被初始化的时候执行的方法
destroy-method
Bean被销毁的时候执行的方法(Bean是单例创建,工厂关闭)

示例



三大框架 之 Spring(IOC控制反转、DI依赖注入)

三大框架 之 Spring(IOC控制反转、DI依赖注入)

Bean的作用范围的配置(即scope属性值)

singleton
默认的,Spring会采用单例模式创建这个对象。
使用该属性定义Bean时,IOC容器仅创建一个Bean实例,IOC容器每次返回的是同一个Bean实例。
prototype
多例模式。
使用该属性定义Bean时,IOC容器可以创建多个Bean实例,每次返回的都是一个新的实例。
request
应用在web项目中,Spring创建这个类以后,将这个对象存入到request范围中。
该属性仅对HTTP请求产生作用,使用该属性定义Bean时,每次HTTP请求都会创建一个新的Bean,适用于WebApplicationContext环境。
session
应用在web项目中,Spring创建这个类以后,将这个对象存入到session范围中
该属性仅用于HTTP Session,同一个Session共享一个Bean实例。不同Session使用不同的实例。
globalsession
应用在web项目中,必须在porlet(基于Java的Web组件,子域名)环境下使用。但是如果没有这种环境,相对于session。
该属性仅用于HTTP Session,同session作用域不同的是,所有的Session共享一个Bean实例。

​ 示例

三大框架 之 Spring(IOC控制反转、DI依赖注入)

工厂实例化的方式

无参构造-默认

三大框架 之 Spring(IOC控制反转、DI依赖注入)

三大框架 之 Spring(IOC控制反转、DI依赖注入)

静态工厂实例化

三大框架 之 Spring(IOC控制反转、DI依赖注入)

三大框架 之 Spring(IOC控制反转、DI依赖注入)

实例工厂实例化

三大框架 之 Spring(IOC控制反转、DI依赖注入)

分模块配置

在加载时,添加多个配置文件名称

三大框架 之 Spring(IOC控制反转、DI依赖注入)

在一个配置文件当中引入另一个配置文件

三大框架 之 Spring(IOC控制反转、DI依赖注入)

Spring属性注入

构造方法的方式的属性注入

三大框架 之 Spring(IOC控制反转、DI依赖注入)

三大框架 之 Spring(IOC控制反转、DI依赖注入)

Set方法的属性注入

三大框架 之 Spring(IOC控制反转、DI依赖注入)

三大框架 之 Spring(IOC控制反转、DI依赖注入)

Set方法设置对象类型的属性

三大框架 之 Spring(IOC控制反转、DI依赖注入)



三大框架 之 Spring(IOC控制反转、DI依赖注入)

三大框架 之 Spring(IOC控制反转、DI依赖注入)

P名称空间的属性注入

使用p名称空间,就不需要写那那么多的property

使用时,要添加名称空间

三大框架 之 Spring(IOC控制反转、DI依赖注入)

xmlns:p="http://www.springframework.org/schema/p"

spEL表达式的属性注入

三大框架 之 Spring(IOC控制反转、DI依赖注入)

集合类型属性注入

数组

三大框架 之 Spring(IOC控制反转、DI依赖注入)

三大框架 之 Spring(IOC控制反转、DI依赖注入)

List集合

三大框架 之 Spring(IOC控制反转、DI依赖注入)

三大框架 之 Spring(IOC控制反转、DI依赖注入)

Set集合

三大框架 之 Spring(IOC控制反转、DI依赖注入)

三大框架 之 Spring(IOC控制反转、DI依赖注入)

Map集合

三大框架 之 Spring(IOC控制反转、DI依赖注入)

三大框架 之 Spring(IOC控制反转、DI依赖注入)

IOC注解方式快速入门

在spring4之后,想要使用注解形式,必须得要引入aop的包

三大框架 之 Spring(IOC控制反转、DI依赖注入)

在配置文件当中,还得要引入一个context约束

<?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">
</beans>

配置组件扫描

哪个包下的类型使用组合扫描

三大框架 之 Spring(IOC控制反转、DI依赖注入)

在类开始位置上添加注解

三大框架 之 Spring(IOC控制反转、DI依赖注入)

三大框架 之 Spring(IOC控制反转、DI依赖注入)

使用注解注入属性

  • 可以不用提供set方法,直接在直接名上添加@value("值")
  • 如果提供了set方法,在set方法上添加@value("值");

三大框架 之 Spring(IOC控制反转、DI依赖注入)

IOC注解详解

@Component

修改一个类,将这个类交给Spring管理  相当于在配置文件当中配置
<bean id="" class="">

@Component三个衍生注解

为了更好的进行分层,Spring可以使用其它三个注解,功能类似

目前使用哪一个功能都一样, 后期可能会添加一些属于各自的属性

@Controller

​ web层

三大框架 之 Spring(IOC控制反转、DI依赖注入)

@Service

​ service层

@Repository

​ dao层

属性注入

@Value

​ 设置普通属性值

三大框架 之 Spring(IOC控制反转、DI依赖注入)

@Autowired

  • 设置对象类型的属性值

  • 直接使用这种方式,是按照类型完全属性注入

  • 不需要在注解上使用id名称

    三大框架 之 Spring(IOC控制反转、DI依赖注入)

  • 习惯是按照名称完成属性注入

    必须让@Autowired注解与@Qualifier一起使用

三大框架 之 Spring(IOC控制反转、DI依赖注入)

三大框架 之 Spring(IOC控制反转、DI依赖注入)

单独使用@Resource

三大框架 之 Spring(IOC控制反转、DI依赖注入)

@PostConstruct

​ 初始化方法

@PreDestroy

​ 销毁方法

@scope

​ 作用范围

三大框架 之 Spring(IOC控制反转、DI依赖注入)

XML与注解比较

  • XML可以适用任何场景 ,结构清晰,维护方便
  • 注解不是自己提供的类使用不了,开发简单方便

XML与注解整合开发

  • XML管理Bean
  • 注解完成属性注入
  • 使用过程中, 可以不用扫描,扫描是为了类上的注解
  • 在没有扫描的情况下, 使用属性注解@Resource @Value @Autowired @Qulifier

三大框架 之 Spring(IOC控制反转、DI依赖注入)

<context:annotation-config/>

三大框架 之 Spring(IOC控制反转、DI依赖注入)的更多相关文章

  1. laravel服务容器&lpar;IOC控制反转&comma;DI依赖注入&rpar;&comma;服务提供者&comma;门脸模式

    laravel的核心思想: 服务容器: 容器:就是装东西的,laravel就是一个个的对象 放入:叫绑定 拿出:解析 使用容器的目的:这里面讲到的是IOC控制反转,主要是靠第三方来处理具体依赖关系的解 ...

  2. spring IOC --- 控制反转(依赖注入)----简单的实例

    IoC(Inversion of Control)控制反转,对象创建责任的反转,在spring中BeanFacotory是IoC容器的核心接口,负责实例化,定位,配置应用程序中的对象及建立这些对象间的 ...

  3. Spring专题2&colon; DI&comma;IOC 控制反转和依赖注入

    合集目录 Spring专题2: DI,IOC 控制反转和依赖注入 https://docs.spring.io/spring/docs/2.5.x/reference/aop.html https:/ ...

  4. Java Web实现IOC控制反转之依赖注入

    控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心. 控制反转一般分为两种类型,依赖注入 ...

  5. 简单了解Spring的控制反转和依赖注入

    浅谈控制反转(Inversion of Control,IOC) 我们首先先来了解一下控制二字,也就是在控制"正"转的情况下,在任何一个有请求作用的系统当中,至少需要有两个类互相配 ...

  6. Spring理论基础-控制反转和依赖注入

    第一次了解到控制反转(Inversion of Control)这个概念,是在学习Spring框架的时候.IOC和AOP作为Spring的两大特征,自然是要去好好学学的.而依赖注入(Dependenc ...

  7. Spring的控制反转和依赖注入

    Spring的官网:https://spring.io/ Struts与Hibernate可以做什么事? Struts, Mvc中控制层解决方案 可以进行请求数据自动封装.类型转换.文件上传.效验… ...

  8. (转)Ioc控制反转和依赖注入

    转载地址:https://zhuanlan.zhihu.com/p/95869440 控制反转控制反转(Inversion of Control,简称IoC),是面向对象编程中的一种设计思想,其作用是 ...

  9. Spring的IOC控制反转和依赖注入-重点-spring核心之一

    IoC:Inverse of Control(控制反转): 读作"反转控制",更好理解,不是什么技术,而是一种设计思想,好比于MVC.就是将原本在程序中手动创建对象的控制权,交由S ...

  10. 如何通俗的理解spring的控制反转、依赖注入、面向切面编程等等

    之前一直不理解spring的一些基础特性是什么意思,虽然网上的解释也很多,但是由于我比较笨,就是看不懂,知道最近才稍微了解,下面就以通俗讲解的方式记录下来. 前言 假设我是一个没有开店经验的小老板,准 ...

随机推荐

  1. tp框架之函数调用

    1.如果要在一个方法里面调用另一个方法,可以先用A方法实例化控制器 $m = A("控制器名"); ,然后根据方法名调用 $m->方法名(可传参数); 2.自定义函数库  ( ...

  2. Python:关于字典的相关操作

    >>> people = {"Tom":170, "Jack":175, "Kite":160, "White& ...

  3. [JAVA词形还原工具]Snowball

    demo:http://snowball.tartarus.org/demo.php jar download:http://snowball.tartarus.org/download.php (J ...

  4. Windows下文件的所有和权限

    跟linux不同, 在linux下 ,文件的所有者,就拥有对文件的所有读写执行的权限, 而windows, 文件的所有者不一定对文件拥有所有的权限, 场景: 要对系统文件(windows\system ...

  5. Java这点事

    1--代码片段:  1 2 3 4 5 byte b1=1,b2=2,b3,b6;  final byte b4=4,b5=6;  b6=b4+b5;  b3=(b1+b2);  System.out ...

  6. Android Fragment类方法

    public void onStart() 当该Fragment对象对用户可见时,该方法会被调用.该方法通常会跟它的Activity的生命周期的Activity.onStart()方法绑定. publ ...

  7. python实现linux下文件遍历

    import os def getAllFile(*names): if len(names) == 0: return "" else: allList = [] for nam ...

  8. 发布后就很丢人的随笔&lpar;c&plus;&plus;&rpar;

    for循环条件中使用的变量 可以是循环条件中定义的变量 也可以是循环之外的变量 代码: #include <iostream> int main(){ int a = 1; int b = ...

  9. Android-Java-单例模式优化&amp&semi;多线程并发

    上一篇博客,Android-Java单例模式,介绍了在真实开发过程中,普遍使用的几种单例模式,而今天这篇博客,将要对单利模式进行优化 并且 通过多线程并发来分析 单利模式的优化: 对于为什么会出现安全 ...

  10. windows下C&plus;&plus;实现遍历本地文件

    1.假设本地 d:/ 下存放着0.txt,1.txt两个文件 2.开发工具VS,开发语言C++,怎么遍历得到两个文件呢? 废话不多,具体代码请看下面: /** * 入参:文件存放文件夹路径,例如D:\ ...