Spring
一、Spring的简介
1、spring的起源和背景
Rod Johson在2002年编著的《Expert one to one J2EE design and development》一书中,对Java EE正统框架臃肿、低效、脱离现实的种种现状提出了质疑,并积极寻求探索革新之道。以此书为指导思想,他编写了interface21框架,这是一个力图冲破Java EE传统开发的困境,从实际需求出发,着眼于轻便、灵巧,易于开发、测试和部署的轻量级开发框架。Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日,发布了1.0正式版。
Spring致力于J2EE应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以说Spring是企业应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。然而,Spring并不想取代那些已有的框架,而与它们无缝地整合。
【Spring】spring的设计目标:遵循一系列的接口标准,这样的好处是只需要简单的Java对象或者Javabean就能进行Java EE开发,这样开发的入门、测试、应用部署都得到了简化。
2、spring简介
Spring是一个开源的用于简化采用Java语言开发企业级程序的一个分层的框架。(一站式集成框架)
Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。
二、Spring作用
◆方便解耦,简化开发
通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。有了Spring,用户不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。
◆AOP编程的支持
通过Spring提供的AOP功能,方便进行面向切面的编程,许多不容易用传统OOP实现的功能可以通过AOP轻松应付。
◆声明式事务的支持
在Spring中,我们可以从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活地进行事务的管理,提高开发效率和质量。
◆方便程序的测试
可以用非容器依赖的编程方式进行几乎所有的测试工作,在Spring里,测试不再是昂贵的操作,而是随手可做的事情。
◆方便集成各种优秀框架
Spring不排斥各种优秀的开源框架,相反,Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Struts,Hibernate、Hession、Quartz)等的直接支持。
◆降低Java EE API的使用难度
Spring对很多难用的Java EE API(如JDBC,JavaMail,远程调用等)提供了一个薄薄的封装层,通过Spring的简易封装,这些Java EE API的使用难度大为降低。
◆Java 源码是经典学习范例
优点:
1.简洁,快捷,一个高效的开发框架
2.有很好DI(依赖注入),代码侵入比较低,代码污染比较低
3.它是兼容其它框架的,封装了其他框架的使用,降低了我们开发的难度
4.解耦,javabean 代替传统EJB。
三、Spring的核心模块
Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式,组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:
1)Spring Core:核心容器,BeanFactory提供了组件生命周期的管理,组件的创建,装配,销毁等功能
SpringContext:ApplicationContext,扩展核心容器,提供事件处理、国际化等功能。它提供了一些企业级服务的功能,提供了JNDI,EJB,RMI的支持。
2) Spring AOP:提供切面支持
3) Spring DAO:提供事务支持,JDBC,DAO支持
4) Spring ORM:对流行的O/R Mapping封装或支持
5) Spring Web:提供Web应用上下文,对Web开发提供功能上的支持,如请求,表单,异常等。
6) Spring Web MVC:全功能MVC框架,作用等同于Struts。
7)核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
四、Spring的注解方式
注解的作用:1、生成文档 2 .跟踪代码依赖性 3.在编译时进行格式检查
@Component : 是所有受Spring 管理组件的通用形式,@Component注解可以放在类的头上,@Component不推荐使用。
@Controller:标识这个类是控制器,对应表现层的Bean 通常作用在控制层
@Autowired :读取 它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作 注释标注在 Setter 方法上
@RequestMapping:转发
@Repository : 表示这是dao的实现类
@Service:服务层 ,对应的业务bean层 通常作用在业务层
@ContextConfiguration:要解析的spring.xml文件
@RunWith :SpringJUnit4ClassRunner.class
@Transactional:事物处理
@Annotation:为并发编程准备
@Immutable 类是不可变的
@ThreadSafe 表示这个类是线程安全的
@NotThreadSafe表示这个类不是线程安全的
五、Spring中bean的注入的三种方式
1、set的注入
本质上是通过set方法来去注入值
bean标签里的class对应着对象的类路径也就是完全限定名,以便spring来去查找加载这个类 id是我们给这个bean赋予的名字,bean工厂根据这个名字来获取这个bean
里面的属性放在property里面,property里的name对应着bean的属性也就是成员变量的名字 value对应着是我们给这个成员变量赋予的值
如果是数组的话,在property里面创建list标签,在list里面放入多个value值,逗号无效,只跟value的标签个数有关
(1)属性的注入:八大基本数据类型及包装类型,String类型
文章图片
(2)注入对象
文章图片
(3)集合类型的注入
a):该标签用来装配可重复的list值。
b):该标签用来装配没有重复的set值。
c)
推荐阅读
- 一个人的旅行,三亚
- 一个小故事,我的思考。
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 开学第一天(下)
- 一个人的碎碎念
- 野营记-第五章|野营记-第五章 讨伐梦魇兽
- 2018年11月19日|2018年11月19日 星期一 亲子日记第144篇
- 遇到一哭二闹三打滚的孩子,怎么办┃山伯教育
- 第326天
- Shell-Bash变量与运算符