Spring框架:
Spring是一个轻量级JavaEE开发框架,以Ioc和AOP为核心,在spring中,认为一切都是资源,而资源是类的实例化对象(Bean),容纳并管理这些Bean的是spring提供的Ioc容器,所以spring是基于Bean的编程。
优点:
非侵入式:指的是框架的API不会在业务逻辑上出现,即业务逻辑是纯净的
容器:spring提供了容器功能,用于管理对象生命周期和对象之间的依赖关系,通过配置文件可以配置对象和依赖关系,到时候可以直接使用
Ioc:控制反转,依赖关系的转移,如果之前依赖于实现,那么现在依赖于抽象,核心思想就是面向接口编程
依赖注入:对象之间依赖关系的实现,包括接口注入,构造注入,属性setter注入,spring中支持后两者
AOP:面向切面编程,网上各种解说都有,笔者觉得大致就是,在不改动原有代码的情况下,对目标进行功能增强和扩充,即在某点插入某面,点即原有功能代码,面即待扩充功能代码
spring主要包含了3大部分:Core container,Data Access/Integeration,Web
Core container:Beans,Core,Context,Spring EL
Data Access/Integeration:JDBC等
WEB:web,servlet,websocket
其他:AOP,Test等
Ioc/DI:
Spring的核心机制Ioc容器,用来削减组件之间的耦合度,在java中,调用者和被调用者存在依赖关系,通过new关键字实例化对象会导致两者耦合增加,不利于项目维护,在Spring框架中,创建和管理对象的工作不再由调用者执行,而是交给框架实施,这样,控制权限由代码程序转移给了spring框架,控制权发生了反转
spring提倡面向接口编程,DI的核心就是:明确定义组件接口,独立开发各个组件,然后根据组件的依赖关系进行组装运行
p命名空间:
需要在文件头增加条目:xmlns:p="http://www.springframework.org/schema/p"//配置Bean
<bean id="cat" class="com.doself.bean.Cat" p:name="小黑" p:age="4"/>
操作结果同上
Bean装配:
spring支持xml和properties两种方式的配置文件,常用xml进行bean的创建和依赖管理,properties存放静态属性;
xml配置文件的根标签就是beans,其内包含若干bean标签,用来定义一个bean并描述依赖关系和如何装配
bean包含以下属性(在bean标签内):
id:bean的唯一标识,装配时根据id获取对象
name:容器同样可以通过name实现对象配置和管理,可以指定多个,用逗号分隔
calss:具体实现类,全路径
scope:作用域,5种
bean子元素标签:
<constructor-arg>:构造注入实例化bean,下游index(属性序号),type(参数类型),ref/value(指定参数值)
<property>:调用bean中setter方法进行注入,完成属性赋值,name指定属性名,value/ref指定值
ref:注入引用其他bean
value:指定一个常量值
list,map,set,entry:指定bean的属性类型为对应类型的属性值
Bean作用域:
singleton:单例,仅定义一个bean对象
property:定义多个对象实例
request:一次Http请求,容器返回一个实例,仅作用于基于web的spring application context情形下有效
session:一次会话返回同一个bean实例,效力同上
global session:在一个全局Http session会话中,返回同一个实例,仅适用protlet context有效
Spring MVC
该框架中,Controller替代了Servlet担负控制器的功能,Controller接收请求,调用相应的组件进行请求处理,处理完成后返回结果,Controller调用相应的View并对结果进行视图渲染,最终相应传送到客户端
Mybatis
支持普通SQL查询,存储过程和高级映射的持久层框架,封装了几乎所有的JDBC代码和参数的手工设置以及结果集查询检索等,使用简单的xml或注解做配置和定义映射关系
需要配置:数据库属性(账户名,密码,url等),接口映射文件等。