`
wujianjun12315
  • 浏览: 111906 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

初识spring

阅读更多
都说spring是轻量级的,现在的市场份额很大,是如何如何的好,我也忍不住系统的来了解一下spring,嘿嘿。。。。
一:spring的整体结构
   spring所有功能的支撑主要是建立在IOC容器之上,所以控制反转和依赖注入是spring技术的核心之所在,而在这基础上实现了DAO,ORM,JEE,WEB等的集成,而在DAO和ORM上有实现了(不知道这样说准确不)AOP这门面向切面的编程,在这里大家应该都很清楚,DAO主要包括了Spring JDBC以及事务管理和控制;ORM方面主要集成了Hibernate,ibatis,JPA等技术,JEE主要是集成了企业开发常用的或者比较复杂的一些功能,如:消息的传播模型(JMS),远程控制(Remoting),邮件功能(Email),还有JMX,JCA等;而WEB这一块主要是实现了Spring Web MVC和Spring portlet MVC还有就是其他的一些附属的功能,如:上传,下载,报表,导出,Velocity,jsps,framMaker,JsF,WebWork,PDF等等技术。从上面的介绍中可以得出结论就是spring主要是为了解决我们业务问题(Servive)而和其他的层次可以很好结成的一个容器。
二:控制反转
1:控制反转(IOC) 业界都叫控制反转,就是所把实例化bean的控制权交给了容器,而不是自己本身,这里就是说以前传统的办法是谁要用谁创建,现在是容器统一创建,谁想要,谁到容器里去取,这里的基础概念就是beanFactory,他提供了对Factory模式的经典实现来消除对程序性单例模式的需要,并真正允许从程序逻辑中分类出依赖关系和配置。而可以通过bean的配置来实现bean的范围是单例的还是不是单例的。而单例和非单例bean他们的实例化时间和过程也是不一样的,单例(singleton)是在实例化容器的时候就创建(应为他们在所有时间都是一同个),而非单例(prototype)是在获得bean的情况下才创建的,应为每取得一个实例都是不同的.除了以上两种,还有request,session,GlobalSession等范围。
2:依赖注入(DI) 依赖注入的基本原理是对象之间的依赖关系(对象里面引用对象)只会通过以下几种方式来实现:构造器的参数,工厂方法的参数,或给由构造函数或者工厂方法的创建对象设置属性。说白了就是在实例化bean的时候利用反射技术通过对bean里面的其他的bean的get方法或者构造函数对他们建立关系。
3:定制bean的特征,这包括了生命周期的回调和了解自己两个层面的理论,其中的生命周期回调就是在设置bean的所有属性之前完成一些初始化的工作,而析构回调时在设置bean的所有属性之后实现对bean的后续的工作,初始化工作可以通过实现InitializingBean接口或者在bean的配置文件中添加Init-method="init"来对初始化方法的指定,析构也是可以通过实现DisposableBean接口或者在bean的配置文件中添加Default-destroy-method="disposable"来实现对后续方法的制定.
4:bean定义的继承,是指子类bean可以通过parent=""属性来制定父类,而在这时子类可以应用父类的class和init和destroy方法,也可以自己用属性指定而覆盖父类的方法。
5:容器扩展点
A:用BeanPostProcess定制bean:如果想在Spring容器完成对bean的实例化,配置和其他的初始化后执行一些自定义的逻辑,就可以插入一个或者多个BeanPostProcess实现,BeanPostProcess可以对bean(或对象)的多个实例进行操作,也就是说,Spring IOC容器会为你实例化bean,然后BeanPostProcess去处理它。一些Spring AOP的底层处理也是通过实现bean后置处理来执行代理包装逻辑。由于BeanPostProcess得实现机制,所以BeanPostProcess或bean的实现不能被自动代理(所以不会被aspect植入)。
B:用BeanFactoryPostProcess定制配置元数据,其中比较典型的是PropertyPlaceHolderConfiguer,他是bean工厂的后置处理器的实现,他把bean里面的属性值单独放到一个java的properties里面,典型的就是配置数据元是的那些连接数据库的属性值。
二:面向切面(AOP)
AOP技术作为Spring的重要组成部分,但是他和IOC之间没有任何的依赖关系,他作为IOC的一个补充,提供了一个强大的中间件解决方案。
  优点:1:提供声明式企业模式,替代了EJB的声明式服务,最重要的声明性事务管理。
        2:允许用户自定义切面,用AOP完善OOP的使用。
  概念:1:切面,连接点,通知,切入点 2:引入,目标对象,AOP代理,织入
        3:通知类型:前置通知,后置通知,异常通知,环绕通知,最终通知
  底层实现:Spring缺省使用j2se的动态代理实现AOP的代理,遮掩任何接口和接口集都可以被代理,其实spring也可以用CGLIB实现代理的,对于需要代理类而不是代理接口的情况下,用CGLIB实现AOP代理是完全必要的。如果一个业务对象没有实现一个接口就默认使用CGLIB实现代理
  @AspectJ的支持:通过在配置文件中加入<aop aspectj-autoproxy>并加入相应的两个jar文件aspectjweaver.jar,aspectjrt.jar然后就可以开始面向切面的开发了:
1:声明切面,就是用@Aspect声明的类,在Spring AOP中声明为切面的类不可能再被其他的切面通知,并且从自动代理中排除掉。
2:声明切入点:可以理解为是spring bean上方法的执行的匹配,切入点表达式通常用@pointcut来标注相应的方法(返回值为了空的方法)
3:申明通知:通知时跟一个切入点表达式连接起来的,并且在切入点方法执行之前或者之后或者前后执行。
4:引入:引入(在AspectJ中被称为inter-type申明)使得一个切面可以定义被通知对象给定的接口,并且可以为那些对象提供的实现。
当强制使用CGLIB时候注意一下问题:1:无法通知(advise)Final方法,因为他们不能被复写。2:你需要将CGLIB2二进制发行包放在classpath下,与之相较JDK本身就提供了动态代理,当需要CGLIB而在classpath下又没有找到相应类库的话,spring会自动提醒3:代理对象的构造器会被调用两次,通常情况下,调用代理类型的构造器两次不是问题,因为除了会发生之排外没有任何真正的逻辑被实现。
5:用编程方式创建@AspectJ的代理
6:在spring应用中使用AspectJ
a)使用AspectJ进行domain object的依赖注入:spring可以对application context中的bean进行配置和实例化外,同样可以通过bean factory对已近存在并且已近定义成bean的对象应用于所包含的配置信息。遮阳的主旨是为脱离容器而创建的对象进行依赖注入。在这里inessence是比较关键的词语,就是说在对象在构造器块中依赖将不可用,如果希望在构造器块之前被注入,则需要使用接口声明上定义@configurable(preconfiguable=true)
四:中间层数据访问
1:事务管理
a)使用资源同步的食物
b)声明式事务
c)编程式事务
2:DAO的支持
3:JDBC数据访问
4:O-R的支持
五:Spring MVC
六:Spring的整合
1:远程调用 2:消息模型JMS 3:定时任务 4:邮件服务 5:webservice

分享到:
评论

相关推荐

    初识Spring

    【初识Spring】 Spring框架是Java企业级应用开发中的核心框架,它为开发者提供了一个全面的基础设施,用于创建稳定、高性能的应用程序。Spring的核心特性包括依赖注入(Dependency Injection,DI)、面向切面编程...

    初识Spring框架-资料.rar

    初学者通过“初识Spring框架-资料.rar”这个压缩包,可以系统地了解和学习Spring的基本概念、核心特性以及在实际开发中的应用。 1. **Spring概述**: Spring最初由Rod Johnson创建,旨在解决企业应用开发的复杂性...

    初识 Spring Security - v1.1.pdf

    ### 初识 Spring Security #### 一、Spring Security 概述 **Spring Security**是一种广泛应用于Java企业级项目中的安全框架,它基于Spring AOP(面向切面编程)和Servlet过滤器来提供全面的安全解决方案。该框架...

    SSM框架的学习与应用-Java EE企业级应用开发学习记录-(第六天)初识Spring框架

    本资源是一篇关于学习和应用SSM框架(Spring、SpringMVC、MyBatis)的学习记录系列文章中的第六天内容,主题为初识Spring框架。 在这一部分中,你将了解到Spring框架的基本概念和使用方法,并通过实例探讨了Spring ...

    读书笔记:Spring Boot 实战1初识Spring Boot.zip

    读书笔记:Spring Boot 实战1初识Spring Boot

    总结_初识Spring Boot(填空版).xmind

    总结_初识Spring Boot(填空版).xmind

    SpringCloud核心技术-初识SpringCloud微服务解决方案.docx

    SpringCloud 核心技术初识微服务解决方案 SpringCloud 是一个基于 Java 语言的微服务架构解决方案,由 Netflix 公司开发,旨在帮助开发者快速构建可靠的微服务系统。 SpringCloud 的核心技术包括服务注册、服务...

    一、初识 Spring MVC

    Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的重要组成部分,主要用于构建 MVC(Model-View-Controller)架构的 Web 应用程序。本篇文章将深入探讨 Spring MVC 的核心概念、工作原理以及...

    第1章 初识Spring的基本应用.ppt

    【Spring的基本应用】是Java EE企业级应用开发中不可或缺的一部分,尤其在Spring+Spring MVC+MyBatis的组合中,Spring作为基础框架扮演着至关重要的角色。本章内容主要涵盖Spring的核心容器、依赖注入以及Spring的...

    Java开发学习(一)----初识Spring及其核心概念.doc

    在Java开发领域,Spring框架是不可或缺的一部分,尤其对于企业级应用开发来说,Spring扮演着至关重要的角色。本文将深入探讨Spring框架的核心概念,包括它的系统架构以及如何通过IOC(Inversion of Control)和DI...

    Beginning Spring 5 From Novice to Professional

    《初识Spring 5:从新手到专家》是一本针对Java开发者深入了解和学习Spring框架的指南。Spring作为Java企业级应用开发的主流框架,它的第五个主要版本带来了许多改进和新特性,旨在提升开发效率和应用程序的灵活性。...

    从入门到高级实战-深度探索SpringSecurity安全框架视频.zip

    01.初识 Spring Security 02.Spring Security 初体验 03.基于内存定义 Spring Security 用户 04.Spring Security 自定义表单登录 05.Spring Security 登录表单配置细节 06.Spring Security 表单登录源码 07.Spring ...

    跟我学spring3pdf,高清

    综上所述,《跟我学Spring3》PDF文档是一个宝贵的学习资源,无论你是初识Spring,还是希望深入理解其精髓,都能从中受益。通过阅读这两部分PDF(跟我学spring3(8-13).pdf和跟我学spring3(1-7).pdf),你将能够逐步...

    7天学会spring cloud教程.pdf.zip

    第一天:初识Spring Cloud 1. Spring Cloud概述:了解Spring Cloud的发展背景,理解其在微服务架构中的地位和作用。 2. Eureka服务注册与发现:学习如何使用Eureka实现服务的注册与发现,理解服务注册与发现的重要性...

    初识Spring——Spring核心容器

    IOC-InversionofControl,译为控制反转,是一种遵循依赖倒置原则的代码设计思想。所谓依赖倒置,就是把原本的高层建筑依赖底层建筑“倒置”过来,变成底层建筑依赖高层建筑。高层建筑决定需要什么,底层去实现这样的...

Global site tag (gtag.js) - Google Analytics