1.介绍
Spring它是一个一站式的分层轻量级框架
作用:
Spring 致力于提供一种方法管理你的业务对象。
Spring 的主要目的是使 JavaEE 易用和促进好编程习惯。
Spring 致力于 J2EE 应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以说 Spring是企业应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。然而,Spring 并不想取代那些已有的框架,而是与它们无缝地整合。
2.依赖注入作用: DI能够让相互协作的软件组件保持松散耦合 耦合:
按照传统的做法,每个对象负责管理与自己相互协作的对象(即它所依赖的对象)的引用(直接new对象),这将会导致高度耦合和难以测试的代码
耦合具有两面性(two-headed beast)。
一方面,紧密耦合的代码难以测试、难以复用、难以理解,并且典型地表现出“打地鼠”式的bug特性(修复一个bug,将会出现一个或者更多新的bug)。
另一方面,一定程度的耦合又是必须的——完全没有耦合的代码什么也做不了。为了完成有实际意义的功能,不同的类必须以适当的方式进行交互。
依赖注入可以最大的收益:松耦合 依赖注入是根据接口注入,传统方式是直接new实现类对象,所以依赖转入方式更通用
Spring依赖注入: 创建应用组件之间协作的行为通常称为装配(wiring)
Spring应用ApplicationContext对bean进行装载,上下文全权负责对象的创建和组装
3.切面应用作用: 面向切面编程(aspect-oriented programming,AOP)允许你把遍布应用各处的功能分离出来形成可重用的组件。同时AOP,可以将遍布系统的关注点(例如事务和安全)从它们所应用的对象中解耦出来
关注点:
系统由许多不同的组件组成,每一个组件各负责一块特定功能。除了实现自身核心的功能之外,这些组件还经常承担着额外的职责。诸如日志、事务管理和安全这样的系统服务经常融入到自身具有核心业务逻辑的组件中去,这些系统服务通常被称为横切关注点,因为它们会跨越系统的多个组件
关注点分散到多个组件中去,你的代码将会带来双重的复杂性
切面: 切点+通知将bean声明为一个切面
4.使用上下文(ApplicationContext)容器: 容器是Spring框架的核心。Spring容器使用DI管理构成应用的组件,它会创建相互协作的组件之间的关联
Spring自带了多个容器实现,可以归为两种不同的类型。
bean工厂:(由org.springframework. beans.factory.BeanFactory接口定义)是最简单的容器,提供基本的DI支持。
应用上下文:(由org.springframework.context.ApplicationContext接口定义)基于BeanFactory构建,并提供应用框架级别的服务
上下文:
接口(ApplicationContext)
AnnotationConfigApplicationContext:从一个或多个基于Java的配置类中加载Spring应用上下文。
AnnotationConfigWebApplicationContext:从一个或多个基于Java的配置类中加载Spring Web应用上下文。
ClassPathXmlApplicationContext:从类路径下的一个或多个XML配置文件中加载上下文定义,把应用上下文的定义文件作为类资源。
FileSystemXmlapplicationcontext:从文件系统下的一个或多个XML配置文件中加载上下文定义。
XmlWebApplicationContext:从Web应用下的一个或多个XML配置文件中加载上下文定义。
|