【Spring开发】—— Spring Core
前言
最近由于一些工作的需要,还有自己知识的匮乏再次翻开spring。正好整理了一下相关的知识,弥补了之前对spring的一些错误认知。这一次学习,更加深入的理解了Ioc和AOP的思想,并对其架构模块有了更深一步的理解。
刚开始翻看spring技术内幕,虽然有了一点看源码的经验,但是直接看如此深的源码,还是很头疼。spring由于业务的扩展,以及用户群的增加,对于某些模块的类封装的很深!因此追溯源码是个很头疼的问题,而直接看这本书,也是压力山大。
于是回去复习一下spring的基本知识,先学会走,在学跑。
先说说spring的核心模块相关的概念,IOC和AOP。
IoC(inversion of control)控制反转,也就是说,控制权由对象转移,对象自己变成了被动的接受。
DI(dependency injection)依赖注入
AOP(aspect oriented programming)面向切面编程
先简单的说说这个AOP
AOP中利用面向切面的编程理论,把每个方法或者函数当做一个切面,在这个切面前后都可以执行不同的方法。
1 <bean id="service"> 2 <property name="interceptorNames" value="advisor"></property> 3 <property name="target">目标</property> 4 </bean>
这里定义了一个拦截器,一个目标bean。
1 <bean id="advisor" class="..."> 2 <property name="advice">//拦截器对象 3 </property> 4 <property name="mappedName">//拦截的方法 5 </property> 6 </bean>
这个目标bean在执行时,会根据配置来确定切面,精确到某个方法。而拦截的方法由上面的mappedName确定,可以通过名字或者通过正则表达式来确定。拦截器对象确定了拦截时触发的函数。
可以进行方法前拦截、方法后拦截、异常拦截。
可以看到Spring Core是spring框架中最低层核心的模块。提供了最基本的Ioc思想框架。
下面讲解一下如何使用!
由于spring是把一个类配置在xml配置文件中,从而进行一些相关的依赖或者注入等等。那么这个配置文件,肯定要被本地化存储并且进行读取。
因此在我们使用前,要进行三步:
读取spring配置文件
bean定义
注入到Ioc容器
之后我们就可以通过bean工厂的getBean获取指定的bean了。
1 最常见的读取配置文件的三种方法:
1 利用ClassPathResource读取资源文件,传入XmlBeanFactory中
1 ClassPathResource res = new ClassPathResource("application.xml") 2 XmlBeanFactory factory - new XmlBeanFactory(res); 3 factory.getBean("testBean");
2 利用输入流,传入到XmlBeanFactory中
1 InputStream is = new FileInputStream("C:\\ApplicationContext.xml"); 2 XmlBeanFactory factory - new XmlBeanFactory(is);
3 直接通过ClassPathXmlApplicationContext读取资源文件
ClassPathXmlAppliationContext appContext = new ClassPathXmlApplicationContext("aaplicationContext.xml");
4 通过在web.xml中指定配置文件的目录,自动读取。关于配置文件的路径有很多种写法,通过指定ClassPath也可以。
1 <listener> 2 <listener-class> 3 org.springframework.web.context.ContextLoaderListener 4 </listener-class> 5 </listener> 6 7 <context-param> 8 <param-name> contextConfigLocation</param-name> 9 <param-value> 10 /WEB-INF/classes/bean.xml 11 </param-value> 12 </context-param>
2 Bean的定义这部分就没什么好说的了,就是读取配置文件,解析里面的文件定义,抽取成数据模型。
3 而注入到Ioc容器中,就是把这个数据模型读取到一个总的BeanFactory中,统一的进行管理。
我们就可以通过这个BeanFactory进行一些操作,比如GetBean()或者containsBean()等等。
杂七杂八
下面简单的罗列了一些配置的内容:
<bean id="examples.MyFactoryBean" factory-method="createInstance"/>
2 构造函数
<bean id="testBean" class="examples.ExampleBean"><constructor-arg><ref bean="testArgs1"/></construtor-arg><constructor-arg><ref bean="testArgs2"/></construtor-arg> </bean>相当于 class testBean{public testBean(testArgs1,testArgs2); }
3 单例模式
<bean id="testBean" class="test.testBean" singleton="false"> 每次请求生成的都是同一个bean
4 <idef> 与 <ref>作用相同,但是idef会在xml加载时 检查 bean是否存在
destroy-method 销毁,通常都是配置数据源、JDBC、输入输入流时,需要在close时销毁对象 depends-on 先后顺序实例化 init-method 初始化调用方法
BeanNameAware 让类知道自己bean在xml中的id名字 BeanFactoryAware 获得beanFactory InitializingBean接口执行初始化方法 Disposablebean 执行销毁方法
9 属性覆盖,这个通常是在配置了一些属性,但是有其他的一些文件修改了这个属性时,使用。
比如说,我们在项目中通过spring的配置文件配置了数据源的相关信息,但是额外有一个xxx.properties进行信息的重写。当有这个文件时,可以让客户自己修改其连接信息,而不用每次都去修改繁琐的spring配置文件。
org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
【Spring开发】—— Spring Core相关推荐
- spring回顾系列——快速了解spring,使用spring开发
文章目录 spring 回顾系列--快速认识spring,使用spring 开发 spring 是什么?✔ spring 的模块展示✌ spring 项目的搭建开发
- Spring开发环境搭建
在spring开发中,我们要根据不同的情况来导入不同的jar包,如果我们要使用的是spring的ioc与di,那么对于ioc与di,我们只需要使用spring的核心功能. 1. beans相关 2. ...
- spring cloud+dotnet core搭建微服务架构:配置中心续(五)
前言 上一章最后讲了,更新配置以后需要重启客户端才能生效,这在实际的场景中是不可取的.由于目前Steeltoe配置的重载只能由客户端发起,没有实现处理程序侦听服务器更改事件,所以还没办法实现彻底实现这 ...
- 手把手教你使用spring cloud+dotnet core搭建微服务架构:服务治理(-)
背景 公司去年开始使用dotnet core开发项目.公司的总体架构采用的是微服务,那时候由于对微服务的理解并不是太深,加上各种组件的不成熟,只是把项目的各个功能通过业务层面拆分,然后通过nginx代 ...
- Spring开发人员知道的一件事
在最近关于(核心)Spring Framework的培训课程中,有人问我:"(Java)Spring开发人员是否应该知道一件事,那应该是什么?" 这个问题使我措手不及. 是的,(核 ...
- spring 开发环境_设置Spring 3开发环境
spring 开发环境 本教程简要说明了如何设置典型的环境来开发基于Spring的应用程序. 除了可以正常工作的Windows XP客户端具有足够的CPU能力和内存外,本教程没有其他先决条件. 在教程 ...
- Spring教程– Spring Core Framework教程
Spring is one of the most widely used Java EE frameworks. I have written a lot on Spring Tutorial an ...
- 使用Eclipse开发Spring的第一个简单程序
使用Eclipse开发Spring的第一个简单程序 本篇文章将通过一个简单的入门程序向读者演示Spring框架的使用过程,具体如下: 使用Eclipse创建Web应用并导入JAR包 使用Eclipse ...
- 开发 Spring 自定义视图和视图解析器
Spring 视图和视图解析器简介 什么是 Spring 视图和视图解析器 Spring MVC(Model View Controller)是 Spring 中一个重要的组成部分,而 Spring ...
最新文章
- 软件测试工程师们,今年的年终奖你想拿多少?
- 拉马车 的游戏 c语言编程,蓝桥杯 拉马车(模拟)
- 阿里云大数据利器Maxcompute学习之-假如你使用过hive
- 一位女生写的追MM秘计
- linux nginx mysql php 5.5.,编译安装Linux + Nginx1.10 + Mysql5.5 + PHP5.6
- 常用9款在线作图工具,总有一款适合你!
- Markdown 下载安装
- Java基础(五十二)-IO编程
- CTFHUB刷题 密码口令/默认口令
- c语言变量报存在bss段,C语言初始化——bss段初始化、跃入C、C与汇编
- 什么是Cloud Computing?
- 企业推广常用的网络推广方法有哪些?
- win10 nas搭建_零起步自建家用NAS
- voip(语音电话)
- 超级高铁创企HTT晒最新测试轨道图 计划今年4月份开始测试
- ISFP型人格的优势和劣势分析(mbti性格测试)
- 索马里ECTN/BESC/CTN证书 我司办理
- html5前端开发 原理,web前端开发应该明白的浏览器工作原理
- Android CircleImageView实现圆形图标/头像
- 毕业设计-基于微信小程序的大学生二手物品交易系统