1、framework(框架)
框架就是一些类和接口的集合,通过这些类和接口协调来完成一系列的程序实现,JAVA框架可以分为三层:表下层、业务层和物理层。框架又叫做开发中的半成品,他不能提供整个web应用程序的所有东西,但是有了框架,我们就可以集中精力进行业务逻辑的开发而不用去关心他的技术实现以及一些辅助的业务逻辑。大家熟知的Structs和Spring就是表示层和业务层框架的强力代表。
2、架构发展历程
(1)单一应用架构:当网站流量很小时,只需要一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量量的数据访问框架(ORM)是关键。
(2)垂直应用架构:当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,提高效率的方法之一是将应用拆成互不相干的几个应用,以提高效率。此时,用于加速前端页面开发的web框架(MVC)是关键。
(3)分布式架构:当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快加速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。
(4)流动计算架构:当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现。此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)是关键。
3、spring开发文档
4、实现业务层与其他层之间的耦合实例
(1)新建一个Java项目
(2)新建一个类,放在包entity下,声明两个变量id和username,声明get()和set()以及tostring()方法,用快捷键alt+insert,选中id和username两个变量,可以自动声明变量,tostring也是一样的。
(3)新建一个接口
(4)新建一个接口的实现方法
(5)搭建数据访问层,首先新建一个接口
(6)新建一个接口的实现方法
(7)方法实现,首先打开Main方法,编写如下代码(会报错,暂时不用管)
package org.example;
import service.IUserService;
import service.Impl.UserServiceImpl;
public class Main {
public static void main(String[] args) {
IUserService service=new UserServiceImpl();
service.getUser();
}
}
打开UserService接口,定义方法
打开UserServiceImpl实现方法
package service.Impl;
import dao.IUserDao;
import dao.Impl.UserDaoImpl;
import service.IUserService;
public class UserServiceImpl implements IUserService {
IUserDao dao=new UserDaoImpl();
@Override
public void getUser() {
dao.getUser();
}
}
打开UserDao定义方法
打开UserDaoImpl实现方法,访问数据库就是在这里进行,这里简单演示以下输出一句话
运行Main方法后可以看到终端输出了结果
5、但是上面这种方法,在后续如果方法改变了,需要修改的地方很多,任何的变更都会加大造成系统bug的可能性。所以引入了以下两个原则,用于解决这个麻烦。
(1)接口分离原则:模块间要通过抽象接口分离开,而不是通过具体的类强耦合起来。
(2)依赖倒置原则:具体实现依赖抽象,下层依赖上层。就如上面那个程序,service是上层,dao是下层,service依赖dao。进行反转后使dao依赖service。这就需要搭建IOC。
6、IOC代码实现
(1)最low的实现方式:导入jar包,配置xml
(2)一般实现方式:maven+注解+xml
(3)高级实现方式:springboot+javaconfig
这里先以最简单的方式来实现
①导入jar包
首先打开下面这个网址点这里,界面如下图
点击5.2.0的那个zip文件,跳转到如下界面,选择5.2.6的第一个dist,右键点击下载
下载后打开可以看到很多jar包
把他保存到桌面或者是磁盘里,打开idel,file->Project Structure->Libraries->+->java,找到刚才保存文件下的五个jar包并导入
在左侧查看是否导入成功
2)配置xml,首先新建一个.xml文件
实现控制反转
<bean class="dao.Impl.UserDaoOrcleImpl" id="userDaoOrcle"/>
<bean class="service.Impl.UserServiceImpl" id="userService"></bean>
实现依赖注入,首先给UserserviceImpl的dao添加get和set方法
配置.xml文件
改写主函数