Spring基础知识简单回顾

Spring框架概述

   Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。
   目的:解决企业应用开发的复杂性。
   功能:使用基本的javaBean来代替EJB,并提供了更多功能。
   范围:所有java应用,不局限于服务端开发。
  简述:spring是一个轻量级控制反转和面向切面的框架。

IoC(控制反转)

IoC概述

   Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
简单来说:A对象依赖B对象,以前的话我们需要在A对象中去主动new一个B对象,IoC改变了这种方式,A对象在初始化时,其所依赖的B对象由Spring容器创建。

代码示例

目录结构
在这里插入图片描述
User
User实体
applicationContext.xml
在这里插入图片描述
UserTest
在这里插入图片描述
测试结果
在这里插入图片描述

IoC创建对象的几种方式

  1.无参数构造器创建
  2.有参数构造器创建
   1)通过参数下标传递参数的方式
   2)通过参数名称传递参数的方式
   3)通过参数类型传递参数的方式
User.java
在这里插入图片描述
applicationContext.xml
在这里插入图片描述
UserTest
在这里插入图片描述
运行结果
在这里插入图片描述

Spring的配置

1.bean的别名配置

1)alias标签
在这里插入图片描述在这里插入图片描述
2)bean标签中的name属性
在这里插入图片描述

2.import标签:将多个配置文件的信息导入到一个配置文件

目录结构
在这里插入图片描述
applicationContext.xml
在这里插入图片描述
beans1.xml
在这里插入图片描述
beans2.xml
在这里插入图片描述
UserTest.java
在这里插入图片描述
测试结果
在这里插入图片描述

DI(依赖注入)

  简单来说:将IoC容器中的对象动态注入到某个对象中,就比如上面提到的A对象和B对象,Spring容器将创建好的B对象注入到A对象中,来满足A对象对B对象的依赖。

1.Set注入

Person.java
在这里插入图片描述
applicationContext.xml
在这里插入图片描述
toString输出
在这里插入图片描述

2.有参数构造器注入

参考IoC通过有参数构造器创建对象的三种方式
将User实体类的有参构造器改为如下:
在这里插入图片描述

3.拓展方式注入

1.p命名空间:适用于set注入
导入约束

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

在这里插入图片描述
2.c命名空间:使用与有参构造器注入
导入约束

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

在这里插入图片描述

Bean的作用域

在这里插入图片描述
1.singleton:单例 每次从容器中获取到的都是同一个对象
2.prototype:原型 每次从容器中获取到的都不是同一个对象
3.request:作用域为web应用的一次请求
4.session:作用域为web应用的一次回话
5.application:作用域为web应用全局

Bean的自动装配

1.在xml中自动装配

1.通过byName
在这里插入图片描述
注意:
在这里插入图片描述
2.通过byType
在这里插入图片描述
注意
在这里插入图片描述

2.使用注解进行自动装配

1.开启注解支持

<context:annotation-config/>

2.注解的作用
@Autowired:现根据bean的类型进行查找注入,若只有一个该类型bean直接注入,若有多个找bean名称一致的进行注入。
@Qualifier:当有多个相同类型的bean,且bean名称都不匹配的,@Autowired可与该注解结合使用,在该注解value属性中输入要注入bean的名称来配合@Autowired进行bean的注入。
@Resources:其功能相当于@Autowired+@Qualifier的功能
在这里插入图片描述
3.@Autowired与@Resources的区别
@Autowired:先byType再byName
@Resources:先byName再byType

Spring注解开发

1.开启注解扫描

在这里插入图片描述

2.@Component

在这里插入图片描述

3.@Value:值类型注入

在这里插入图片描述

4.衍生的注解

注:以下注解与@Component注解功能相同
在这里插入图片描述

@Repository:对应三层的dao层

在这里插入图片描述

@Service:对应三层中的service层

在这里插入图片描述

@Controller:对应三层的Controller层

在这里插入图片描述

5.作用域注解@Scope

在这里插入图片描述

AOP(面向切面编程)

AOP概念

与OOP对比,AOP是处理一些横切行问题。这些横切性问题不会影响到主逻辑的实现,但是会散落到代码的各个部分,难以维护。AOP就是把这些问题和主业务逻辑分开,达到与主业务逻辑解耦的目的。对主业务逻辑进行一些横向的拓展。

AspectJ 中必须要了解的概念:

Aspect: Aspect 声明类似于 Java 中的类声明,在 Aspect 中会包含着一些 Pointcut 以及相应的 Advice。
Joint point:表示在程序中明确定义的点,典型的包括方法调用,对类成员的访问以及异常处理程序块的执行等等,它自身还可以嵌套其它 joint point。
Pointcut:表示一组 joint point,这些 joint point 或是通过逻辑关系组合起来,或是通过通配、正则表达式等方式集中起来,它定义了相应的 Advice 将要发生的地方。
Advice:Advice 定义了在 pointcut 里面定义的程序点具体要做的操作,它通过 before、after 和 around 来区别是在每个 joint point 之前、之后还是代替执行的代码。

AOP 帮助我们解决了新的问题没有?

AOP 并没有帮助我们解决任何新的问题,它只是提供了一种更好的办法,能够用更少的工作量来解决现有的一些问题,并且使得系统更加健壮,可维护性更好。同时,它让我们在进行系统架构和模块设计的时候多了新的选择和新的思路。

AOP的三种实现方式
方式一:Advice的类实现Spring提供的接口

1.程序目录
在这里插入图片描述
2.Log
在这里插入图片描述
3.UserServiceImpl
在这里插入图片描述
4.applicationContext.xml
在这里插入图片描述
5.测试类及其结果
在这里插入图片描述
方式二:xml配置
1.LogTwo
在这里插入图片描述
2.applicationContext.xml
在这里插入图片描述
3.测试类及其结果
在这里插入图片描述

方式三:注解实现

1.LogThree
在这里插入图片描述
2.applicationContext.xml
在这里插入图片描述
3.测试类及其结果

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值