00、spring框架绪论
曾经做开发的时候,我们用的框架比如
Struts2
Mybatis
开发一个应用,用的非常单一,两者没有联系是独立起来的,现在学习spring
框架可以做到Struts2
+spring
+mybatis
中间的桥梁,进行整合联系糅合。我们把这个特点称为 轻量级解决方案。
- **特点:**将项目中的单层框架以最佳方式融合在一起。其实就是上述的。
- 核心作用:
01、spring环境搭建
1.01spring依赖的导入
- 我们不用spring最新版本,因为对jdk要求太高,我们选择spring 4.x版本即可。
- 进入
maven
管理,搜索spring。
网址:https://mvnrepository.com/search?q=spring
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.20.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.3.20.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.3.20.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>4.3.20.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.3.20.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>4.3.20.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.3.20.RELEASE</version> </dependency>
1.02生成spring框架的配置文件
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5UwH5fsR-1604408298799)(https://cdn.jsdelivr.net/gh/JackieLing/mage1/img/20201027002244.png)]
1.03spring框架如何管理组件对象的创建
- 看一下我们传统的对象是通过
new
出来的:
接下来我们要用bean
来管理对象userDao
。
<!-- 1、bean作用:用来管理组件对象的标签。 2、用来管理组件java类的全类名 3、在工厂中生成组件对象的唯一标识 --> <bean id="bb" class="day1.UserDaoImpl"/>
1.04启动工厂并在工厂中启动组件对象
package day1; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class TestSpring { public static void main(String[] args) { //启动工厂 ApplicationContext context=new ClassPathXmlApplicationContext("day1/day1.xml"); //获取工厂中的对象,还要进行强制转换一下 UserDao userDao = (UserDao) context.getBean("bb"); //使用对象 userDao.find("小明"); } }
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mHRwDwWL-1604408298804)(https://cdn.jsdelivr.net/gh/JackieLing/mage1/img/20201027010748.png)]
02、IOC和DI核心思想
2.1、IOC 控制反转 核心思想定义
- IOC全称:invasion of controll翻译 反转控制,控制反转。
以前做开发我们是手动new
对象,我们想在哪个类创建对象就创建对象,主动权在我们手上,spring
的核心就是:将我们的这个主动权剥夺了,我们创建对象的权利移交给了spring工厂,创建之前要通过 spring工厂来创建,相当于 权力下放。
- DI全称:dependcy injection翻译为 依赖注入
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n32lPH0q-1604408298807)(https://cdn.jsdelivr.net/gh/JackieLing/mage1/img/20201027135806.png)]
2.2、面试小概念:
03、set注入的语法
- 一个依赖注入的实例:
项目结构图:
一个接口,一个实现类,一个测试类,xml配置文件。
studentImpl类:
package pojo; public class StudentImpl { private String name;// 1、把依赖生成成员变量 public void setName(String name) {// 2、生成一个set方法准备导入依赖 this.name = name; } @Override public String toString() { return "StudentImpl{" + "name='" + name + '\'' + '}'; } }
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="student" class="pojo.StudentImpl"> <property name="name" value="令狐"/>生成对象,并赋值,就是依赖注入! </bean> </beans>
测试类:
package pojo; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class StudentTest { public static void main(String[] args) { //启动指定的工厂 ApplicationContext Context = new ClassPathXmlApplicationContext("/init/init.xml"); //拿取指定的对象 StudentImpl student = (StudentImpl) Context.getBean("student"); //打印返回 System.out.println(student.toString()); } }
【2020Spring编程实战笔记】Spring开发分享~(下)+https://developer.aliyun.com/article/1621240