【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()等等。

  杂七杂八

  下面简单的罗列了一些配置的内容:

  1 工厂模式

<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 初始化调用方法

  8 也可以通过指定的接口,java类进行相应的操作:

BeanNameAware 让类知道自己bean在xml中的id名字
BeanFactoryAware 获得beanFactory
InitializingBean接口执行初始化方法
Disposablebean 执行销毁方法

  9 属性覆盖,这个通常是在配置了一些属性,但是有其他的一些文件修改了这个属性时,使用。

  比如说,我们在项目中通过spring的配置文件配置了数据源的相关信息,但是额外有一个xxx.properties进行信息的重写。当有这个文件时,可以让客户自己修改其连接信息,而不用每次都去修改繁琐的spring配置文件。

org.springframework.beans.factory.config.PropertyPlaceholderConfigurer

  

  

时间: 2024-12-28 19:30:36

【Spring开发】—— Spring Core的相关文章

IDEA开发spring的环境搭建

摘要: 主要讲解使用 IDEA 开发 Spring MVC 的环境搭建,Maven的简单教学. 参考1:https://my.oschina.net/gaussik/blog/385697 参考2:http://www.cnblogs.com/Leo_wl/p/4459274.html 前言 本文是本人开始使用 IDEA 的开端,从 java 框架开始,安装参考以上文章. 一.相关环境 - JDK 1.8.0_45 - Maven 3.3.9 - Tomcat 8.5.12 - MySql 5.

用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建三:配置spring并测试

这一部分的主要目的是 配置spring-service.xml  也就是配置spring  并测试service层 是否配置成功 用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建二:配置MyBatis 并测试(2 配置spring-dao和测试)在这个基础上面 继续进行spring的配置. 回顾上面  我们已经成功测试通过了Mybatis的配置. 这时候的目录结构是: 一:下面我们继续补充目录结构,在com.peakfortake的文件目录项目 

用 MyEclipse 开发 Spring 入门操作

何为Spring Spring框架是一个轻量级的控制反转(IOC)技术和面向切面编程(AOP)技术的容器框架,利用Spring框架可以实现对象的生命周期管理和分离应用系统中的业务逻辑组件和通用的技术服务组件. 接下来开始我们的第一个Spring程序 1. 首先新建 Java 项目 Test. 这个过程无需赘述了, 建议建项目的时候将 src 目录和 bin(或者classes)目录分开, 另外提示你切换透视图的时候一定要切换过去到 Java 透视图, 此时默认会在 Package Explore

[转载]开发 Spring 自定义视图和视图解析器

原文出处 http://www.ibm.com/developerworks/cn/java/j-lo-springview/ 概述 Spring 3.0 默认包含了多种视图和视图解析器,比如 JSP.Velocity 视图等,但在某些情况下,我们需要开发自定义的视图及其解析器,以便显示特殊文件格式的视图,我们也可以使用自定义视图及解析器,针对特定的视图做相应的处理.本文将通过一个示例来介绍如何开发 Spring 自定义视图和视图解析器,来显示后缀名为 SWF 的视图,并提供一个简单的注册机制,

Spring开发1 Spring基础及组件使用

相比 Spring Boot  以及  Spring MVC ,  Spring组件使用比较多 Spring是一种开源轻量级的框架,解决JavaEE的解决方案. “一站式” spring--->IOC-DI依赖注入 Dog dog = new Dog(); application.xml---->声明 <bean id="dog" class="com.cng.Dog"> strcut ---> 重 spring使用注解代替xml  -

借助Spring Boot 简化 Spring 开发

Spring Boot 是令人兴奋的新项目,它提供了四个主要的特性,能够改变开发Spring应用程序的方式. 1.Spring Boot Starter: 他将常用的依赖分组进行了整合,将其合并到一个依赖中,这样就可以一次性添加到项目的Maven或Gradle构建中. 2.自动配置: Spring Boot 的自动配置特性利用了Spring 4对条件化配置的支持,合理地推测应用所需的bean 并自动化配置它们. 3.命令行接口: Spring 的 CLI 发挥了Groovy 编程语言的优势,并结

Extjs5.0从入门到实战开发信息管理系统(Extjs基础、Extjs5新特性、Spring、Spring mvc、Mybatis)视频教程

Extjs5.0从入门到实战开发信息管理系统(Extjs基础.Extjs5新特性.Spring.Spring mvc.Mybatis)视频教程下载   联系QQ:1026270010 Extjs作为一款优秀的JS前端开发框架以其良好的架构.丰富的UI组件库.完善的文档和社区支持等诸多优点拥有广泛的市场应用空间,开发人员无需过多的关注HTML.CSS甚至各种常用JS算法,只需把精力放在业务逻辑上,利用各种组件的相互组合调用便可轻松而高效的开发出系统的前端页面. Extjs5在之前版本的基础上又推出

基于Spring开发的DUBBO服务接口测试

基于Spring开发的DUBBO服务接口测试 知识共享主要内容: 1. Dubbo相关概念和架构,以及dubbo服务程序开发步骤. 2. 基于Spring开发框架的dubbo服务接口测试相关配置. 3. spring test+junit和spring test+TestNG两种测试框架脚本编写方法. 一.        DUBBO与DUBBO架构 1.          什么是dubbo?DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治

利用Maven搭建Spring开发环境 【转】

一.   概要说明 最近几天在测试Spring3.0的AOP功能,在测试功能之前,首先是要搭建出Spring3.0的开发功能.开始去官网下载Spring的相关jar包,但是这些jar包中还是会需要其他的一些jar包,于是又手动的去下载其他的相关jar包.这样也可以搭建出开发环境,但是需要频繁的去下载缺少的jar包,很麻烦.这里,我们可以还有一个更好的办法,采用maven来管理我们的工程,让maven来自动为我们去下载相关版本的jar包,具体的配置如下. 二.   下载并安装maven 去网上下载

使用Spring开发第一个HelloWorld应用

http://www.importnew.com/13246.html 让我们用Spring来写第一个应用程序吧. 完成这一章要求: 熟悉Java语言 设置好Spring的环境 熟悉简单的Eclipse IDE的操作 如果你还没有设置好环境,请参考Spring开发环境的配置. 我们第一个程序是打印”Hello World”语句,这个语句通过Spring的配置文件来设置. 1 – 新建Java项目: 第一步用Eclipse IDE新建一个项目. 点击 > File > New > Java