对于Spring记录

说明:主要作为记录,工作中查看的资料太多,没有办法都记住,我想着把之前看到资料,整理一下,便于以后自己查询,如果有侵权,联系我


前言

记录


提示:以下是本篇文章正文内容,下面案例可供参考

一、spring的学习

1. spring项目中常用的设计模式

spring常用设计模式介绍说明应用场景
简单工厂又叫静态工厂方法模式: Spring中的BeanFactorySpring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定
工厂方法模式spring中的FactoryBean 由应用程序直接使用new创建新的对象,为了将对象的创建和使用相分离,采用工厂模式,即应用程序将对象的创建及初始化职责交给工厂对象一般情况下,应用程序有自己的工厂对象来创建Bean.如果将应用程序自己的工厂对象交给Spring管理,那么Spring管理的就不是普通的Bean,而是工厂Bean
单例模式Spring中 的BeanFactory就是全局单例的,我们日常开发的service默认也是单例模式,单例存在于Spring容器中保证一个类仅有一个实例,并提供一个访问它的全局访问点
适配器模式Spring中的AOP、拦截器SpringAOP模块对BeforeAdvice、AfterAdvice、ThrowsAdvice三种通知类型的支持实际上是借助适配器模式来实现的,这样的好处是使得框架允许用户向框架中加入自己想要支持的任何一种通知类型,上述三种通知类型是SpringAOP模块定义的,它们是AOP联盟定义的Advice的子类型。
包装器模式Spring中的各种Wrapper、Decorator注重覆盖、扩展,装饰器和被装饰器都实现同一个接口,主要目的是为了扩展之后依旧保留OOP关系
代理模式Spring中的AOP就是采用的代理模式,代理有JDK动态代理(jdkDynamicAopProxy)和 Cglib代理(Cglib2AopProxy)两种模式事务代理、非侵入式日志监听
观察者模式spring中的AapplicationListener 事件驱动编程思想定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 监听器、日志收集、短信通知、邮件通知
策略模式spring中在实例化对象的时候用到strategy模式最终执行结果是固定的,执行过程和执行逻辑不一样。

2. 设计模式遵循六大原则

设计模式原则说明
开闭原则(OpenClosePrinciple)为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类
里氏代换原则(LiskovSubstitutionPrinciple)面向对象设计的基本原则之一。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范
依赖倒转原则(DependenceInversionPrinciple)这个是开闭原则的基础,具体内容:针对接口编程,依赖于抽象而不依赖于具体
接口隔离原则(InterfaceSegregationPrinciple)使用多个隔离的接口,比使用单个接口要好。还是一个降低类之间的耦合度的意思,从这儿我们看出,其实设计模式就是一个软件的设计思想,从大型软件架构出发,为了升级和维护方便。 降低依赖,降低耦合
迪米特法则(DemeterPrinciple)一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立
合成复用原则(CompositeReusePrinciple)原则是尽量使用合成/聚合的方式,而不是使用继承

3. 对spring的理解

spring思想应用场景总结
AOPAspectOrientedProgramming(面向切面编程)找出多个类中有一定规律的代码,开发时拆开,运行时再合并。面向切面编程,即面向规则编程解耦
OOPObjectOrientedProgramming(面向对象编程)归纳总结生活中一切事物封装、继承、多态
BOPBeanOrientedProgramming(面向Bean编程)面向Bean(普通的java类)设计程序一切从Bean开始
IOCInversionofControl(控制反转)将new对象的动作交给Spring管理,并由Spring保存已创建的对象(IOC容器)转交控制权(即控制权反转)
DI/DLDependencyInjection(依赖注入)或者DependencyLookup(依赖查找)依赖注入、依赖查找,Spring不仅保存自己创建的对象,而且保存对象与对象之间的关系,注入即赋值,主要三种方式构造方法、set方法、直接赋值先理清关系再赋值)

4. Spring简化Java开发

1、基于POJO的轻量级和最小侵入性编程
2、通过依赖注入和面向接口松耦合
3、基于切面和惯性进行声明式编程
4、通过切面和模板减少样板式代码

5.依赖注入实现方式

1.构造器注入
2.Setter方法注入
3.接口注入

6. Spring配置到应用开发中配置方式

1.基于XML的配置
Spring命名空间的所支持的一系列的XML标签来实现的。
Spring有以下主要的命名空 context、beans、jdbc、tx、aop、mvc和aso
在这里插入图片描述

2.基于注解的配置
注解装配在Spring中是默认关闭的。
需要在Spring文件中配置一下才能使用基于注解的装配模式。
在这里插入图片描述
可以用注解的方式在Spring中向属性、方法和构造方法中自动装配变量。
下面是几种比较重要的注解类型:
1.@Required:该注解应用于设值方法。
2.@Autowired:该注解应用于有值设值方法、非设值方法、构造方法和变量。
3.@Qualifier:该注解和@Autowired注解搭配使用,用于消除特定bean自动装配的歧义。
4.Spring支持基于JSR-250注解的以下注解,@Resource、@PostConstruct和@PreDestroy。

3.基于Java的配置
Spring对Java配置的支持是由@Configuration注解和@Bean注解来实现的。
由@Bean注解的方法将会实例化、配置和初始化一个新对象,这个对象将由Spring的IOC容器来管理。@Bean声明所起到的作用与 元素类似。被@Configuration所注解的类则表示这个类的主要目的是作为bean定义的资源。
被@Configuration声明的类可以通过在同一个类的内部调用@bean方法来设置嵌入bean的依赖关系
在这里插入图片描述
对于上面的@Beans配置文件相同的XML配置文件如下
在这里插入图片描述

7. Spring Bean作用域

作用域说明
singleton这种bean范围是默认的,这种范围确保不管接受到多少个请求,每个容器中只有一个bean的实例,单例的模式由bean factory自身来维护
prototype原形范围与单例范围相反,为每一个bean请求提供一个实例
request在请求bean范围内会每一个来自客户端的网络请求创建一个实例,在请求完成以后,bean会失效并被垃圾回收器回收
Session与请求范围类似,确保每个session中有一个bean的实例,在session过期后,bean会随之失效
global-sessionlobal-session和Portlet应用相关。当你的应用部署在Portlet容器中工作时,它包含很多portlet。如果你想要声明让所有的portlet共用全局的存储变量的话,那么这全局变量需要存储在global-session中,全局作用域与Servlet中的session作用域效果相同

8.spring 内部bean

例如:
在这里插入图片描述
内部bean的声明方式如下
在这里插入图片描述
spring提供的集合类标签
在这里插入图片描述

9.Spring框架中自动装配

装配模式说明
no这是Spring框架的默认设置,在该设置下自动装配是关闭的,开发者需要自行在bean定义中用标签明确的设置依赖关系
byName该选项可以根据bean名称设置依赖关系。当向一个bean中自动装配一个属性时,容器将根据bean的名称自动在在配置文件中查询一个匹配的bean。如果找到的话,就装配这个属性,如果没找到的话就报错
byType该选项可以根据bean类型设置依赖关系。当向一个bean中自动装配一个属性时,容器将根据bean的类型自动在在配置文件中查询一个匹配的bean。如果找到的话,就装配这个属性,如果没找到的话就报错
constructor造器的自动装配和byType模式类似,但是仅仅适用于与有构造器相同参数的bean,如果在容器中没有找到与构造器参数类型一致的bean,那么将会抛出异常
autodetect该模式自动探测使用构造器自动装配或者byType自动装配。首先,首先会尝试找合适的带参数的构造器,如果找到的话就是用构造器自动装配,如果在bean内部没有找到相应的构造器或者是无参构造器,容器就会自动选择byTpe的自动装配方式

二、使用步骤

1.设计模式之间的关系图

在这里插入图片描述


总结

目前先简单的记录一下, 后期如果有的话,再继续更新
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南大白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值