一、Spring介绍
1.1 技术介绍
Spring 是分层的 Java SE/EE 应用轻量级开源框架,以 IoC(Inverse Of Control:反转控制)和 AOP(Aspect Oriented Programming:面向切面编程)为内核,提供了展现层 SpringMVC 和持久层 Spring JDBC 以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的 Java EE 企业应用开源框架。
1.2 官方网址
1.3 发展历程
- 1997 年 IBM 提出了 EJB 的思想
- 1998 年,SUN 制定开发标准规范 EJB1.0
- 1999 年,EJB1.1 发布
- 2001 年,EJB2.0 发布
- 2003 年,EJB2.1 发布
- 2006 年,EJB3.0 发布
- Rod Johnson(spring 之父)
Expert One-to-One J2EE Design and Development(2002)
阐述了 J2EE 使用 EJB 开发设计的优点及解决方案
Expert One-to-One J2EE Development without EJB(2004)
阐述了 J2EE 开发不使用 EJB 的解决方式(Spring 雏形) - 2017 年 9 月份发布了 spring 的最新版本 spring 5.0 通用版(GA)
1.4 spring的优势
- 方便解耦,简化开发
- AOP编程的支持
- 声明式事务的支持
- 方便程序的测试
- 方便集成各种优秀的框架
- Java源码时经典的学习范例
1.5 体系结构
1.6 控制反转(IOC)
二、环境搭建
2.1 创建项目
2.1.1 新建一个项目
2.1.2 创建一个Maven项目,点击Next
2.1.3 对项目进行命名,点击Next
从上到下依次是
- GroupId:组织(公司)域名
- Artifactid:项目名
-
Version:版本
-
填写项目名及项目位置,点击Finish
- 完成创建
-
进入开发界面,IDEA自动打开pom.xml文件
2.2 配置
2.2.1 配置pom文件
- 打包方式为jar,并添加spring依赖,本例使用的版本为
5.2.4.RELEASE
,使用时可根据项目的需要进行修改
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.toj</groupId>
<artifactId>spring</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 以下为新增的配置 -->
<!-- 配置打包方式 -> 打成jar包 -->
<packaging>jar</packaging>
<dependencies>
<!-- 添加Spring依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.4.RELEASE</version>
</dependency>
</dependencies>
<!-- 新增配置结束 -->
</project>
2.2.2 导入依赖
三、Demo开发演示
3.1 Demo概述
模拟三层架构模式,在持久层输出一段字符串模拟存入数据库,在服务层调用持久层,并最终在表现层输出,整个过程中对象不使用new创建,完全由spring进行管理
3.2 项目结构
3.2.1 配置bean.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="accountDao" class="cn.toj.springdemo.dao.impl.AccountDaoImpl"></bean>
<bean id="accountService" class="cn.toj.springdemo.service.impl.AccountServiceImpl"></bean>
</beans>
3.2.2 持久层接口
package cn.toj.springdemo.dao;
public interface IAccountDao {
void saveAccount();
}
3.2.3 持久层接口实现类
- 功能:输出字符串代表调用成功
package cn.toj.springdemo.dao.impl;
import cn.toj.springdemo.dao.IAccountDao;
/**
* @author 400ToJava
* @description 持久层
* @Date 2020/7/8
*/
public class AccountDaoImpl implements IAccountDao {
@Override
public void saveAccount() {
System.out.println("保存用户信息成功!");
}
}
3.2.4 服务层接口
package cn.toj.springdemo.service;
public interface IAccountService {
void saveAccount();
}
3.2.5 服务层实现类
- 使用spring进行持久层对象的创建
package cn.toj.springdemo.service.impl;
import cn.toj.springdemo.dao.IAccountDao;
import cn.toj.springdemo.service.IAccountService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* @author 400ToJava
* @description 服务层
* @Date 2020/7/8
*/
public class AccountServiceImpl implements IAccountService {
@Override
public void saveAccount() {
ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
IAccountDao ad = ac.getBean("accountDao", IAccountDao.class);
ad.saveAccount();
}
}
3.2.6 表现层
- 使用spring进行服务层对象的创建
package cn.toj.springdemo.ui;
import cn.toj.springdemo.service.IAccountService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* @author 400ToJava
* @description 表现层
* @Date 2020/7/8
*/
public class Client {
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
IAccountService as = ac.getBean("accountService", IAccountService.class);
as.saveAccount();
}
}
3.2.7 运行Client结果
保存用户信息成功!
Process finished with exit code 0
3.3 Demo下载地址
- GitHub项目地址:https://github.com/diyzhang/42j100-springdemo
- 使用Git下载项目的命令
git clone https://github.com/diyzhang/42j100-springdemo.git