您现在的位置是:首页 >技术杂谈 >Spring-【回顾】网站首页技术杂谈

Spring-【回顾】

Comus_j 2024-09-25 00:01:03
简介Spring-【回顾】

简介

轻量级的IOC AOP框架

组成

七大模块
AOP
ORM
DAO
Web
Context
WebMVC
Core

IOC理论推理

增加需求的时候不需要改变原来的代码,降低耦合性

IOC本质

控制:谁来控制对象的创建,传统应用程序的对象是由程序本身创建的,使用pring后,对象由Spring创建
反转:程序本身不创建对象,而变成被动接受对象
依赖注入:就是利用set方法来进行注入
IOC是一种编程思想,由主动的编程编程被动的接受
我们彻底不用在程序中去改动了,要实现不同的操作,只需要在xml配置文件中进行修改。

IOC创建对象的方式

默认使用无参构造
假设我们要使用有参构造创建对象
下标赋值
类型
参数名
在配置文件加载的时候,容器中管理的对象就已经初始化了

配置说明

import可以将多个bean放在一个配置文件,使用时直接导入总的配置文件即可

DI依赖注入环境

		构造器注入

		Set方式注入【重点】
				依赖:bean对象的创建依赖于容器
				注入:bean对象中的所有属性,由容器来注入
						普通植入
						对象注入
						数组注入
						集合List注入
						集合Map注入
						集合Set注入
						字符串注入
						
		拓展方式注入

c、p命名空间

p对应set注入
c对应构造器注入

Bean的作用域 scope

单例
原型
request
session
application
websocket
后面四个只能在web开发中使用

自动装配Bean

自动装配是Spring满足bean依赖的一种方式
Spring会在上下文自动寻找,并自动给bean装配属性
在Spring中有三种装配方式
xml
java中显示配置
隐式的自动装配【重要】
byName:根据对象的set方法后面对应的beanid
byType:对象属性相同的bean

注解实现自动装配

@Autowired配合@Qualifier使用属于Spring注解
@Resource为jdk注解

都是自动装配的,都可以放在属性字段上
@Autowired 通过byType的方式实现,而且必须要求这个对象存在!【常用】
@Resource 默认通过byname的方式实现,如果找不到名字,则通过byTye实现!如果两个都找不到的 情况下就报错!【常用】
@执行顺序不同:@Autowired通过byType的方式实现。@Resource默认通过byname的方式实现。
类型重复的话,如果名字不是默认的(如cat11,cat111,而没有默认的cat)
@Autowired配合@Qualifier(value = “cat11”)使用
@Resource直接使用@Resource(name = “cat11”)

@Nullable :字段标记了这个注解,说明字段可以为null

使用javaconfg实现配置

javaconfg是Spring的一个子项目,在Spring4之后称为一个核心功能

@Configuration
public class Apponfig{
		@Bean
		piublic Myservice myService(){
			return  new MyServiceImpl();
		}
}

代替

<beans>
	<bean id="myService" class="com.service.MyServiceImpl"/>
<beans>

总结一

所有的类都需要装配到Bean里面
所有的Bean 都需要通过容器去取
容器取得的Bean就会一个对象

AOP

设计模式:代理模式
SpringAop底层就是代理模式
代理模式:
静态代理
动态代理

角色分析
抽象角色:一般会使用接口或者抽象类来解决
真实角色:被代理的角色
代理角色:代理真实角色,代理真实角色后,我们一般会做一些附属操作
客户:访问代理对象的角色
代码步骤:

	接口
	真实
	代理:实现接口的方法、引入真实属性、设置set方法并把属性设置为参数、写方法在需要添加功能的方法上调用该方法
	客户

动态代理

解决静态代码代码复杂的问题
底层是反射
动态代理分为两大类:基于接口、基于类
基于接口:jdk动态代理:jdk动态代理要求目标对象必须实现接口
基于类:cglib

				另外:java字节码实现:javasist

两个类:Proxy:代理,InvocationHandler:调用处理程序
动态代理:在程序执行中,使用jdk的反射机制,创建代理类对象,并动态的指定要代理的目标类

换句话说:使用jdk的反射机制,创建对象的能力,创建的是代理类的对象。而不用你创建类文件。不用写java文件
动态:在程序的执行时,调用jdk提供的方法才能创建代理类的对象。

实现:
jdk:使用java反射包中的类和接口实现动态代理的功能
InvocationHandler,Method,Proxy
cglib:继承,不能是final修饰的类

jdk动态代理:
1:反射,Method

AOP

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。