- Spring-基础知识
- 一. 简介
- 1.1 优点
- 1.2 核心技术
- 二. IOC技术
- 2.1 搭建环境
- 2.2 IOC概念
- 2.3 IOC快速入门
一. 简介
Spring 解决的是业务逻辑层与其他层的松耦合问题,将面向接口的思想贯穿整个系统应用。也有人称为粘合剂,用于粘合其余别的层的框架。
web程序开发分层一般如下:
- web层: apache struts1, apache struts2(xwork), springmvc
- service层:spring
- dao/mapper/repositorey层:jdbc,DbUtils,mybatis,springdata
- SpringBoot 不属于任何一层,是搭建项目基础平台的框架,提倡 0配置,不写xml文件。用java形式运行javaweb项目
Spring 的出现解决了 JaveEE 的实际问题
- 方便解耦(高内聚、低耦合):Spring 是一个超级工厂(超级容器),可以将对象的创建和依赖关系交给 Spring工厂 去管理
- AOP编程:Spring 提供面向切面编程(底层是动态代理),可以方便的对程序进行运行监控,权限验证等操作
- 声明事务:只需要通过配置就完成对事务的管理,无需手动编程
- 方便测试:Spring支持junit4,可以使用Spring注解方式测试程序
- 方便集成各种框架
- 降低JaveEE API的使用难度
IOC(Inverse of Control) 控制反转:将对象的创建权力交给Spring工厂进行管理
AOP(Aspect Oriented Programming) 面向切面编程:基于动态代理的功能增强方式
在idea中选择maven方式构建项目,在pom.xml文件中导入Spring
2.2 IOC概念org.springframework spring-context 5.1.20.RELEASE
IOC是一种设计思想。
- 举例:传统编程使用某个类,会创建对象然后调用方法。
- 存在问题:当前代码与 new 出来的对象紧密绑定,如果程序进一步升级,那就比较麻烦。(web 创建service对象,service创建dao对象,三层严重耦合在一起)
- 常见操作:在 service层 创建 dao层 对象,调用其中方法
- IOC思想:将对象的创建与维护交给Spring框架,自己书写的代码仅仅只需向 Spring 框架索要对应的对象使用即可。无需关心如何创建对象,对象的生命周期
- 控制反转:将对象的创建、维护、销毁权力交给 IOC容器,前提是需要告诉 IOC容器 应该维护哪些对象,需要通过 xml 或者注解的方式告诉Spring。学习Spring的核心在于学习如何配置
我们创建一个最基本的web例子,仅包含service层、dao层、pojo类,
文件结构如下:
其中书写代码如下:
配置pom.xml如下,主要是配置Spring和junit
org.springframework spring-context 5.1.20.RELEASE junit junit 4.12 test
pojo类:
public class User {
}
dao层:
public class UserDao {
public void addUser(User user) {
System.out.println("将user添加入数据库");
}
}
service层:
public class UserService {
private UserDao dao;
public void setDao(UserDao dao) {
this.dao = dao;
}
public void addUser(User user){
dao.addUser(user);
}
}
以上代码是简化的web流程,由service调用Dao, Dao操作数据库。
接下来配置Spring配置文件,文件名:applicationContext.xml。通过配置的方式告诉Spring需要管理那些类
正式使用Spring
public class SpringTest {
@Test
public void testAddUser(){
// 1.获取Spring的核心对象
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
// 2.向Spring容器要我们想使用的UserService对象
UserService userService = (UserService) context.getBean("userService");// getBean返回值为Object,需要向下强制转换类型
// 3.通过对象调用方法
userService.addUser(null);// 打印结果: 将user添加入数据库
}
}



