1、Spring
1.1、简介
- 解决企业应用开发的复杂性
- 理念:使现有的技术更加容易使用
- 官网:https://spring.io/projects/spring-framework#learn
- 下载地址:https://repo.spring.io/ui/native/release/org/springframework/spring
- GitHub: https://github.com/spring-projects
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.16</version>
</dependency>
1.2、优点
- 开源的免费框架(容器)
- 轻量级、非入侵式的框架
- 特性:控制反转(IOC)、面向切面编程(AOP)
- 支持事物的处理,对框架整合的支持
== Spring就是一个轻量级的控制反转和面向切面编程的框架
1.3、组成

1.4、扩展
- SpringBoot:
- 一个快速开发的脚手架
- 基于SpringBoot可以快速开发单个微服务
- 约定大于配置
- SpringCloud:
- 是基于SpringBoot实现的
弊端:配置十分繁琐
2、IOC(控制反转)
从用户掌握主动权到程序员掌握主动权,程序的调用。(最初的就是客户点单你要根据他的需求去买菜,可能你之前买的菜用不上了。后来就是用户根据你提供的菜单点餐,客户点的菜都是店里有的。)
- 控制反转就是:获得的依赖对象反转了
- 控制反转是一种通过描述(xml或注解)并通过第三方去生产或获取特定对象的方式。在spring中实现控制反转的是ioc容器,其实现的方法是依赖注入(DI)
控制:传统应用程序的对象是由程序本身控制创建的,使用Spring后是由Spring创建的。
反转:程序本身不创建对象,而变成被动的接收对象
依赖注入:利用set方法来进行注入
ioc就是一种编程思想,由主动的编程变成被动的接收
要实现不同的操作只需要在xml配置文件中进行修改。
对象由Spring来创建、管理、装配
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
https://www.springframework.org/schema/beans/spring-beans.xsd">
<!--使用Spring来创建对象,在spring中这些都称为bean
类型 变量名 = new 类型();
Hello hello = new Hello();
bean=对象
id=变量名
class = new的对象
property 相当于给对象中的属性设置一个值
-->
<bean id="mysqlImpl" class="com.he.dao.UserDaoMysqlImpl"/>
<bean id="oracleImpl" class="com.he.dao.UserDaoOracleImpl"/>
<bean id="UserServiceImpl" class="he.yan.service.UserServiceImpl">
<!--ref:使用spring容器中创建好的对象
value:具体对象的值,基本数据类型
-->
<property name="userDao" ref="oracleImpl"/>
</bean>
</beans>
此时对象是oracleImpl输出的也是它的内容
实体类:
public class UserDaoOracleImpl implements UserDao{
public void getUser() {
System.out.println("oracle获取用户数据");
}
}
测试文件:
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class mytest {
public static void main(String[] args) {
//用户实际调用的是业务层
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
UserServiceImpl userServiceImpl = (UserServiceImpl)context.getBean("UserServiceImpl");
userServiceImpl.getUser();
}
}
结果输出: oracle获取用户数据