什么是spring?
spring是分层的javaSE/EE full-stack轻量级开源框架,IOC和AOP
学习目标:
一、 ApplicationContext容器使用
属性setter方法注入的实现
二、 Spring中的IoC和DI
三、 Spring的概念和优点
spring服务器端采用三层体系架构:
表示层(Web): Struts等框架的整合
业务逻辑层(Service):管理事务、记录日志
持久层(Dao):整合Hibernate、JdbcTemplate
Spring框架的优点:
1、非侵入式设计
2、方便解耦、嘉华开发
3、支持AOP
4、支持声明式事务处理
5、方便程序测试
6、方便继承各种优秀框架
7、降低Java EE API 的使用难度
Spring的体系结构
1、Core Container(核心容器)
Beans(重点):Spring的顶层接口,提供了BeanFactory,Spring将管理对象称为Bean。
Core(重点):提供了Spring的基本组成部分,包括IoC(控制反转)和DI
Context(重点):上下文模块,建立在Core和Beans之上
SpEL(了解):Spring3.0后新增模块,是运行和操作对象图的强大的表达式语言。
2、Data Access/Integration(数据访问/集成)
数据处理模块:
JDBC(重点):提供了JDBC抽象层,方便操作数据库
ORM(了解):对象关系映射API
OXM(了解):是一个xml
JMS(了解):java的消息符
Transactions(重点):处理事务
3、Web
WebSocket(了解):Spring4.0后新增的模块
Servlet(重点):也称为Spring-webmvc模块,包含Spring模型-视图-控制器(MVC)
和RESTWeb Services实现的程序
Web(重点):提供基本的Web开发集成特性
Portlet(了解):类似Service
4、其他模块
AOP(重点):面向切面编程
Aspects(重点):也是一个AOP框架,
Instrumentation(了解):类加载器
Messaging(了解):Spring4.0后新增模块,消息传递体系和协议的支持
Test(掌握):单元测试
Spring的libs中四个Spring的基础包,分别对应核心容器的四个模块
Spring的第三方依赖包:
Spring的核心容器
BeanFactory容器(了解):创建BeanFactory实例时,需要XML文件来管理
Beanfactory是一个接口,需要new一个实现类来使用它
BeanFactory beanFactory = new XmlBeanFactory(new FileSystemResource("F://applicationContext.xml"));
//需要FileSystemResource参数 //Xml配置文件地址
ApplicationContext(容器):BeanFactory的子接口,包含BeanFactory所有功能
创建ApplicationContext容器有以下两种方法:
1、通过ClassPathXmlApplicationContext创建(常用)
ApplicationContext applicationContext=new ClassPathXmlApplicationContext(String configLocation);
//ClassPathXmlApplicationContext会从类路径classPath中寻找XML配置文件,找到并装载完成ApplicationContext的实例化工作
2、通过FileSystemXmlApplicationContext创建(不常用)
ApplicationContext applicationContext=new FileSystemXmlApplicationContext(String configLocation);
//FileSystemXmlApplicationContext会从指定的文件系统路径(绝对路径)中寻找XML配置文件,找到并撞在完成ApplicationContext的实例化工作
java项目中,通过ClassPathXmlApplicationContext类实例化ApplicationContext容器
Web项目中,ApplicationContext容器的实例化工作交给Web服务器
Web服务器实例化ApplicationContext容器时,通常使用ContextLoaderListener来实现,这种方法只需要在web.xml中添加如下代码:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:spring/applicationContext.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
创建Spring容器后,就可以获取Spring容器中的Bean。
Spring获取Bean的实例两种方法:
1、Object getBean(String name);
根据容器中Bean的id或name来获取指定的Bean,返回顶层类型,Object(对象)类型,获取后需要强制类型转换
2、<T> T getBean(Class<T> requiredType)
根据类对象的类型来获取Bean的实例。由于时泛型方法,因此不需要强制转换类型