有关jar包:四个基础包和一个依赖包 4+1
1、spring-core-4.3.6.RELEASE.jar
包含Spring框架的核心工具类,Spring其它组件都要用到这个包里的类。
2、spring-beans-4.3.6.RELEASE.jar
所有应用都要用到的JAR包,它包含访问配置文件、创建和管理Bean以及进行控制反转或者依赖注入操作相关的所有类。
3、spring-context-4.3.6.RELEASE.jar
提供了在基础IoC功能上的扩展服务,还提供了许多企业级服务的支持
4、spring-expression-4.3.6.RELEASE.jar
定义了Spring的表达式语言。
5、依赖包-------在使用Spring开发时,除了要使用自带的JAR包外,Spring的核心容器还需要依赖commons.logging的JAR包。
一、Spring的核心是IOC(控制反转)和AOP(面向切面编程)
Spring模块:
核心容器提供 Spring 框架的基本功能(Spring Core),包括IOC和DI功能。
IOC:控制反转—自己需要的对象由别人创建(别人是指Spring框架)
DI:依赖注入—自己需要使用的对象由别人提供(别人是指Spring框架)
核心容器又分为BeanFactory和ApplicationContext
核心容器的主要组件是 BeanFactory ,它是工厂模式的实现,作为IOC容器管理Bean。
BeanFactory 使用IOC模式将应用程序的配置和依赖性规范与实际的应用程序代码分开,将类和类之间的依赖从代码中脱离出来,用配置的方式进行依赖关系描述,由IoC容器负责依赖类之间的创建、拼接、管理、获取等工作。 BeanFactory接口是Spring框架的核心接口,实现了容器的许多核心功能。
上下文
Context模块构建与核心模块之上,扩展BeanFactory的功能,提供了许多企业服务,例如JNDI、EJB、电子邮件、国际化、校验和调度功能。ApplicationContext是Context模块的核心接口。
AOP(面向切面编程)
数据访问对象(Spring Dao)
对象关系映射(Spring ORM)
Spring Web(web及远程操作)
Spring Web MVC
Spring提供了MVC框架,称为Spring MVC。
关于控制反转和依赖注入
IOC是让生成类的方式由传统方式(new)反过来,既程序员不调用new,需要类的时候由框架注入(DI),是同一件不同层面的解读。
IoC主要的实现方式有两种:依赖查找,依赖注入。依赖注入是一种更可取的方式。
依赖注入(Dependency Injection . DI ) :IOC是目的,DI则是手段。IoC容器实际上是一个DI框架。
AOP术语
切面(Aspect):横切关注点(跨越应用程序多个模块的功能)被模块化的特殊对象
通知(Advice):切面必须要完成的工作
目标(Target):被通知的对象
代理(Proxy):向目标对象应用通知之后创建的对象
连接点(Joinpoint):程序执行的某个特定位置
连接点由两个信息确定:方法表示的程序执行点;相对点表示的方位
切点(pointcut):每个类都有多个连接点(连接点四程序类中客观存在的事务)
AOP通过切点定位到特定的连接点
连接点相当于数据库中的记录,切点相当于查询条件
18.10.09
Spring中的Bean
如果把Spring看作一个工厂,则容器中的Bean就是该工厂的产品
Appilication对象的时候就是工厂开始加工的时候
ApplicationContext context = new ClassPathXmlApplicationContext(“applicationContext.xml”);
Bean的实例化方式:构造器实例化、静态工厂方式实例化和实例工厂方式实例化
Bean的装配方式:基于XML的装配、基于注解(Annotation)的装配和自动装配(其中最常用的是基于注解的装配。
(写的是源文件,执行的是编译后的文件)
基于Annotation的装配
主要注解:
@Component:用于描述Spring中的Bean,它是一个泛化的概念,仅仅表示一个组件。
@Repository:用于将数据访问层(DAO)的类标识为Spring中的Bean 。
@Service:用于将业务层(Service)的类标识为Spring中的Bean。
@Controller:用于将控制层(Controller)的类标识为Spring中的Bean 。
@Autowired:用于对Bean的属性变量、属性的setter方法及构造方法进行标注,配合对应的注解处理器完成Bean的自动配置工作。
@Resource:其作用与Autowired一样。@Resource中有两个重要属性:name和type。Spring将name属性解析为Bean实例名称,type属性解析为Bean实例类型。
@Qualifier:与@Autowired注解配合使用,会将默认的按Bean类型装配修改为按Bean的实例名称装配,Bean的实例名称由@Qualifier注解的参数指定。(是相当于重命名功能,一般直接使用Autowired)