摘要:如何降低开发的复杂性最小侵入编程通过面向接口和依赖注入实现松耦合基于编程惯例和切面进行声明式编程通过模板减少样板式代码容器在应用中,不再由对象自行创建或管理它们之间的依赖关系容器负责创建对象装配对象配置它们并管理它们的整个生命周期。
欢迎大家关注我的微信公众号,一起探讨Java相关技术
使用Spring的目的Spring是为了解决企业级应用开发的复杂性而创建的,使用Spring可以让简单的JavaBean实现之前只有EJB才能完成的事情。
Spring如何降低Java开发的复杂性最小侵入编程
通过面向接口和依赖注入实现松耦合
基于编程惯例和切面进行声明式编程
通过模板减少样板式代码
Spring容器在Spring应用中,不再由对象自行创建或管理它们之间的依赖关系;Spring容器负责创建对象、装配对象、配置它们并管理它们的整个生命周期。
容器是Spring框架的核心,是依赖注入和切面的基础,其自带了多个容器实现,这多个实现可以归类为两种不同的类型:
Bean工厂,提供基本的依赖注入支持
ApplicationContext,基于Bean工厂构建,提供应用框架级别的服务
ApplicationContext在实际的应用中更广泛、更受欢迎。
Spring自带了多种类型的应用上下文,其中最常用的几种为:
AnnotationConfigApplicationContext:从一个或多个基于Java的配置类中加载Spring上下文
AnnotationConfigWebApplicationContext:从一个或多个基于Java的配置类中加载Spring Web应用上下文
ClassPathXmlApplicationContext:从类路径下的一个或多个xml配置文件中加载Spring上下文
FileSystemXmlApplicationContext:从文件系统下的一个或多个xml配置文件中加载Spring上下文
XmlWebApplicationContext:从Web应用下的一个或多个xml配置文件中加载Spring上下文
Spring实例化Bean
Spring将值和Bean的引用注入到Bean对应属性中
如果Bean实现了BeanNameAware接口,Spring将Bean的id传给setBeanName()方法
如果Bean实现了BeanFactoryAware接口,Spring调用setBeanFactor()方法,将BeanFactory实例传入
如果Bean实现了ApplicationContextAware接口,Spring调用setApplicationContext()方法,将Bean所在的应用上下文传入
如果Bean实现了BeanPostProcessor接口,Spring调用postProcessBeforeInitialization()方法
如果Bean实现了InitializingBean接口或使用了init-method声明了初始化方法,Spring调用afterPropertiesSet()方法
如果Bean实现了BeanPostProcessor接口,Spring调用postProcessAfterInitialization()方法
Bean初始化完毕,可以进行使用,其将一直在应用上下文中驻留,直到该应用上下文销毁
如果Bean实现了DesposableBean接口或使用了destroy-method声明了销毁方法,Spring将调用destroy()方法
Spring核心模块Spring的模块依据其所属的功能可以划分为6类。
core:Spring核心
context:Spring容器
beans:Spring的Bean工厂
expression:Spring表达式语言
context-support:Spring容器辅助支撑
aop:面向切面编程
aspectJ:切面注解相关
JDBC:数据库访问相关
JMS:消息相关
ORM:对象关系映射模型相关
OXM:XML映射模型相关
transaction:事务相关
Messaging:消息服务相关
Web MVC:Spring提供的MVC框架
Web Servlet:Servlet相关
WebSocket:Socket编程相关
使用场景有限,暂时不需要了解
Spring提供的测试框架
总结本文从总的方向上对Spring相关的内容进行了介绍,并不涉及任何细节的东西。主要涉及Spring的优势、Spring容器、Spring应用上下文、Spring生命周期、Spring项目的模块化。在接下来的文章中,将会通过示例的方式展示Spring每一项功能的使用。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/77433.html
摘要:配置切面编程方式实现说结账说要点什么注解表示前置增强后面的切点表达式表示在目标类的方法织入增强,方法可以带任意的传入参数和任意的返回值。类相当于上一篇中的增强切点,切面三者联合表达的信息。 @AspectJ配置切面 编程方式实现 public class Waiter { public void check(String name){ System.out.pr...
摘要:开头正式开启我入职的里程,现在已是工作了一个星期了,这个星期算是我入职的过渡期,算是知道了学校生活和工作的差距了,总之,尽快习惯这种生活吧。当时是看的廖雪峰的博客自己也用做爬虫写过几篇博客,不过有些是在前人的基础上写的。 showImg(https://segmentfault.com/img/remote/1460000010867984); 开头 2017.08.21 正式开启我...
摘要:是什么是面向切面编程的简称。负责实施切面,它将切面所定义的横切逻辑织入到切面所指定的连接点钟。静态正则表达式匹配切面是正则表达式方法匹配的切面实现类。流程切面的流程切面由和实现。 aop是什么 aop是面向切面编程(aspect oriented programing)的简称。aop的出现并不是要完全替代oop,仅是作为oop的有益补充。aop的应用场合是有限的,一般只适合于那些具有横...
摘要:哪吒社区技能树打卡打卡贴函数式接口简介领域优质创作者哪吒公众号作者架构师奋斗者扫描主页左侧二维码,加入群聊,一起学习一起进步欢迎点赞收藏留言前情提要无意间听到领导们的谈话,现在公司的现状是码农太多,但能独立带队的人太少,简而言之,不缺干 ? 哪吒社区Java技能树打卡 【打卡贴 day2...
摘要:前提好几周没更新博客了,对不断支持我博客的童鞋们说声抱歉了。熟悉我的人都知道我写博客的时间比较早,而且坚持的时间也比较久,一直到现在也是一直保持着更新状态。 showImg(https://segmentfault.com/img/remote/1460000014076586?w=1920&h=1080); 前提 好几周没更新博客了,对不断支持我博客的童鞋们说声:抱歉了!。自己这段时...
阅读 1009·2021-11-22 13:52
阅读 923·2019-08-30 15:44
阅读 569·2019-08-30 15:43
阅读 2423·2019-08-30 12:52
阅读 3472·2019-08-29 16:16
阅读 636·2019-08-29 13:05
阅读 2942·2019-08-26 18:36
阅读 1973·2019-08-26 13:46