SSM框架学习笔记
Spring在表现层它提供了Spring MVC以及Struts框架的整合功能;在业务逻辑层可以管理事务,记录日志等;在持久层可以整合Mybatis、Hibernate、Jdbc等技术。Spring贯穿于表现层、业务逻辑层和持久层。
主要的体系结构:
- 核心容器
Spring将管理对象称为Bean
Context访问定义和配置的任何对象的媒介。其中ApplicationContext接口是上下文模块的焦点。 - 数据访问/集成
API对象关系映射、事务模块实现特殊接口以及所有POJO类的编程和声明式的事务管理。 - Web
- 其他模块
核心容器
BeanFactory就是一个管理Bean的工厂,主要负责初始化各种Bean。
创建Spring容器后,就可以获取Spring容器中的Bean。Spring获取Bean的实例通常采用两种方法:
- Object getBean(String name):根据容器中Bean的id或者name来获取指定的Bean,获取之后需要进行强制类型转换。
- T getBean(Class requiredType):根据类的类型来获取Bean的实例。此方法为泛型方法,因此在获取Bean之后不需要强制类型转换。
依赖注入
依赖注入与控制反转的含义相同。在传统模式下通常会采用“new 被调用者”的代码方式来创建对象,这种方式会导致调用者与被调用者之间的耦合性增加,不利于后期项目的升级与维护。
使用Spring框架后,对象的实例不再由调用者来创建,容器会负责控制程序之间的关系,而不是由调用者的代码直接控制。Spring容器负责将被依赖对象赋值给调用者的成员变量,这相当于为调用者注入了它依赖的实例。
动态将所依赖的对象注入Bean组件中,通常有两种方式:
- 属性setter方法注入:指Spring容器使用setter方法注入被依赖的实例。通过调用无参构造器或无参静态工厂方法实例化Bean后,调用Bean的setter方法。
- 构造方法注入:指Spring容器使用构造方法注入被依赖的实例。
常有注解:
@Component:描述bean
@Repository:用于数据访问层
@Service:用于业务层
@Controller:用于控制层
@Autowired:按照Bean类型对Bean属性变量、属性的setter方法进行标注
@Resource:按照Bean实例名称进行标注,有两个重要属性,name和type,name解析为实例名称,type解析为实例类型。
MyBatis
MyBatis框架也被称为ORM框架,ORM就是一种为了解决面向对象于关系型数据库中数据类型不匹配的技术,它通过描述java对象与数据库表之间的映射关系,自动将java应用程序中的对象持久化到关系型数据库中的表。使用ORM框架后,应用程序不再直接访问底层数据库,而是以面向对象的方式来操作持久化对象。
MyBatis是一个半自动映射的框架。MyBatis需要手动配置提供POJO、SQL和映射关系,但MyBatis可以配置动态SQL并优化SQL,可以通过配置决定SQL的映射规则,还支持存储过程。
MyBatis详解与JSON、SSM整合后续更新