-
什么是Spring框架?
它是一个容器,是一个整合其他框架的框架,它的核心是IOC和APO,它由20多个模块组成,在很多领域都提供优秀的解决方案
我们学习Spring SpringMVC SpringBoot SpringCloud
-
Spring的特点
-
轻量级
由20多个模块组成,每一个jar包都很小,小于1M,核心包3M
对代码无污染,
-
面向接口编程
使用接口就是面向灵活,项目的可扩展性,可维护性都极高,接口不关心实现的类型,使用时接口只想实现类,切换实现类即可切换整个功能。
-
apo:面向切面编程
就是将公共的,通用的,重复的代码单独开发,在需要的时候反织回去,底层原理是动态代理
-
整合其他框架
他整合之后是其他框架更加易用。
-
-
什么是IOC
控制反转IOC(inversion of contral)是一个概念,是一种思想。由Spring容器进行对象的创建和依赖注入,程序员在使用时直接取出使用。
正转:由程序员进行对象的创建和依赖注入称之为正转,程序员说了算
反转:由Spring容器创建对象和依赖注入称之为反转,将控制权从程序员手中夺走,由给Spring容器,称为反转
-
Spring项目的创建
-
1.创建Maven项目,选择jdk1.8及以上的版本
-
2.创建好之后点击pom.xml文件导入maven依赖(版本根据自己的需求选择)
-
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.3.18</version> </dependency>
-
3.重点:在项目的resources的资源文件夹下创建Spring的配置文件,官方命名为applicationContext.xml
-
创建方式:
然后在文件中加入Spring模板就可以啦
<?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"> </beans>
-
基于xml的IOC
-
创建对象
<!--创建学生类对象 等同于 Student student = new Student(); id:就是创建的对象的名称 class:就是创建的对象的类型,底层通过反射构建对象 启动容器的同时创建对象 --> <bean id="stu" class="com.bjpowernode.pojo.Student"></bean>
-
给创建的对象赋值
-
使用Setter注入
简单类型注入和引用类型注入
简单类型注入值使用value属性
<property name="name" value="张三"></property> <!--xml文件的语法,所以age需要带引号--> <property name="age" value="57"></property>
引用类型注入值使用ref属性
<bean id="stu" class="com.bjpowernode.pojo2.Student"> <property name="name" value="李四"></property> <property name="age" value="23"></property> <property name="school" ref="school"></property> </bean>
必须要注意:使用setter注入必须要提供无参的构造方法,必须提供setXXX方法。
-
使用构造方法注入
项目案例:
使用三层架构进行用户的插入操作
界面层,业务逻辑层,数据访问层(模拟)
Spring会接管三层架构中哪些对象的创建?
非Spring接管下的三层项目构建:
-
实体类
com.bjpowernode.dao users
-
数据访问层
com.bjpowernode.dao UserMapper.java(接口)
UserMapperImpl.java(实现类)
-
业务逻辑层
com.bjpowernode.service UserService.java(接口)
UserServiceImpl.java(实现类)
-
页面层
com.bjpowernode.contriller UserController.java
不使用spring时三层架构的创建
-
实体类的创建
package com.bjpowernode.pojo; //实体类 public class Users { private int uid; private String uname; private int uage; public Users(int uid, String uname, int uage) { this.uid = uid; this.uname = uname; this.uage = uage; } public Users() { } public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; } public int getUage() { return uage; } public void setUage(int uage) { this.uage = uage; } @Override public String toString() { return "Users{" + "uid=" + uid + ", uname='" + uname + '\'' + ", uage=" + uage + '}'; } }
-
数据访问层
//数据访问层 public interface UserMapper { //增加用户 int insert(Users u); } /** * 数据访问层实现类*/ public class UserMapperImpl implements UserMapper{ @Override public int insert(Users u) { System.out.println(u.getUname()+"用户增加成功"); return 1; } }
-
业务逻辑层
/** * 业务逻辑层*/ public interface UserService { //增加用户 int insert(Users users); } /** * 业务逻辑层的实现类*/ public class UserServiceImpl implements UserService { //所有的业务逻辑层中 必定有数据访问层的对象 private UserMapper userMapper=new UserMapperImpl(); @Override public int insert(Users users) { //可以添加更加复杂的业务b return userMapper.insert(users); } }
-
界面层
//界面层 public class UserController { //如何访问业务逻辑层对象 //所有的界面层都会有业务逻辑层的对象 public UserService userService =new UserServiceImpl(); //界面层的功能实现就是对外提供访问的功能 public int insert(Users users){ return userService.insert(users); } }
-
创建测试类进行测试
public class Test01 { @Test public void testInsertUsers(){ //创建userController对象 UserController userController =new UserController(); int num = userController.insert(new Users(100, "张三", 33)); System.out.println(num); } }
-
运行结果如下
-
-
使用spring框架时三层架构的创建:
-
1:导入Spring依赖项
-
2:添加配置文件applicationController.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="uMapper" class="com.bjpowernode.dao.UserMapperImpl"></bean> <!--创建业务逻辑层对象--> <bean id="uService" class="com.bjpowernode.service.impl.UserServiceImpl"> <property name="userMapper" ref="uMapper"></property> </bean> <!--创建界面层对象--> <bean id="uController" class="com.bjpowernode.controller.UserController"> <property name="userService" ref="uService"></property> </bean> </beans>
-
注意:使用spring时需要修改业务逻辑层实现类和界面层的内容(因为对象改由spring创建)
-
/** * 业务逻辑层的实现类*/ public class UserServiceImpl implements UserService { //所有的业务逻辑层中 必定有数据访问层的对象 private UserMapper userMapper;// =new UserMapperImpl(); //交给Spring去注入值时,必须提供setter方法 public void setUserMapper(UserMapper userMapper) { this.userMapper = userMapper; } @Override public int insert(Users users) { //可以添加更加复杂的业务b return userMapper.insert(users); } }
-
//界面层 public class UserController { //如何访问业务逻辑层对象 //所有的界面层都会有业务逻辑层的对象 public UserService userService ;//=new UserServiceImpl(); //交给Spring去注入值时,必须提供setter方法 public void setUserService(UserService userService) { this.userService = userService; } //界面层的功能实现就是对外提供访问的功能 public int insert(Users users){ return userService.insert(users); } }
-
最后创建测试类进行测试
public class Test01 { @Test public void testInsertUsers(){ //1.创建容器并启动 ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); //取出对象 UserController uController = (UserController) ac.getBean("uController"); //测试功能 int insert = uController.insert(new Users(123, "李四", 34)); System.out.println(insert); } }
输出结果为
-
Spring框架的入门1
最新推荐文章于 2023-10-21 23:04:17 发布