1.什么是框架
简单来说,就是将公共的部分进行了抽取,形成了通用的代码体,这就被成为框架
使用方法:引入特定jar包/class/方法,就可以使用框架里的方法
实际意义:简化代码的开发,提高框架的扩展性
2.Spring框架
2.1
什么是spring框架?针对bean的生命周期进行管理的轻量级容器
spring框架主要作用:将其他框架进行整合,以一种通用的方式进行管理(框架的大管家)
什么是bean?被spring容器管理的对象被称为bean
spring是学习微服务架构和SpringCloud的基础
接下来我们用idea开始编写第一个Spring项目,首先需要对idea工具进行环境的配置
传送门:从零开始编写第一个spring项目
2.2MVC模型
在大型项目中一般通过MVC模型的思想将代码分为三级,这样就出现了三层代码结构,需要注意的是MVC模型是一种思想,它不等于三层代码结构。
优点:方便维护,代码看起来更加整洁,不至于混乱
实现步骤:
1.M(model)持久层:与数据库进行交互的代码放这里,mybatis也在(dao层)
2.C(controller)控制层:完成业务的具体的操作过程(controller-service层)
3.V(view)视图层 :一般指用户看到的内容(页面)
三层代码结构:MVC思想的具体实现
Model:Dao层,Dao层是数据库层
Controller:Controlle和Service层,Controller负责接收从Dao层发过来的请求,Service负责处理请求
View:视图层,页面、js、css
2.3.IOC(控制反转)的思想
什么是IOC?参考百度百科
控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。
问题说明:传统方式是直接通过new方式创建对象,这样的方式将对象与其它对象紧紧地绑定在一起,为了降低耦合度,所以就有了IOC
解决方式:将对象的创建方式交给Spring容器管理(管理对象的创建,初始化,使用,销毁)
3.Spring IOC的具体实现
3.1配置jdk
3.2创建第一个Spring项目
pom文件是maven(对象关系模型)的配置
install和clean实现项目的打包和打包项目的删除,打包后会生成一个jar文件,可以被其他项目依赖,后期可用来在Linux服务器上的部署,而本地仓库的jar包,是自己项目的依赖。compile用来编译。site用来生成maven报告,其他的使用较少
maven的坐标作用:用来检索jar包文件的,maven通过这样的方式管理了几乎所有的jar包(中央仓库,私服镜像)
3.3添加jar包文件
我用的5.3.6版本的spring jar包,可以在spring官网下载最新的jar包
<dependencies>
<!--Spring核心包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.6</version>
</dependency>
<!--引入SpringBean-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.3.6</version>
</dependency>
<!--引入context包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.6</version>
</dependency>
<!--引入表达式jar包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>5.3.6</version>
</dependency>
<!--引入日志依赖-->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<!--引入测试包-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
创建pojo(package):实体对象,一般和数据库中的表对应,如果我有个user表所以实体对象名字就叫做user
3.4.Spring容器创建对象
3.4.1创建配置文件
1.在resource文件夹中创建xml文件,这是spring用来管理对象的配置文件
2.编辑配置文件
3.编写pojo实体类和测试文件
package com.jt.pojo;
public class User {
public void say(){
System.out.println("你好spring框架");
}
}
@Test//测试方法名不能与类名一致
public void testSpring01(){
//1.通过加载配置文件,创建spring容器对象,容器创建对象
ApplicationContext context=new ClassPathXmlApplicationContext("application.xml");
//2.getBean调取对象有良种方式通过对象名字,和对象的类型
//得到的对象是Object但是我们是user类型所以强转
User user = (User) context.getBean("user");
User user1 = context.getBean(User.class);
//3.执行方法
user.say();
}
4.测试后运行成功
通过实体类创建测试方法,forname采用反射的方式调用,反射调用时必然会调用对象的无参构造,如果构造方法被占用则运行会发生错误
@Test
public void demo2() throws ClassNotFoundException, IllegalAccessException, InstantiationException {
//1.通过类的路径实例化类型...
Class userClass = Class.forName("com.jt.pojo.User");
//2.实例化对象
User user = (User) userClass.newInstance();
user.say();
}