一、什么是Spring?
Spring是一个轻量级的IOC/DI和AOP容器的开源框架
目标:使现有技术更加易用,推进编码最佳实践
内容:IOC容器、AOP实现、数据访问支持、简化JDBC/ORM框架、声明式事务、Web集成
设计理念:面向Bean的编程
二、Spring 的优点
1、低入侵式设计
2、独立于各种应用服务器
3、依赖注入特性将组件关系透明化,降低耦合度
4、面向切面编程特性允许将通用任务进行集中式处理
5、可以与第三方框架良好整合
6、非常简单的且强大的声明式事务管理
7、提供与第三方Web框架无缝集成,且自己也提供了一套 SpringMVC 框架,来方便 Web 层搭建
三、Spring Ioc的原理和配置
1、IOC(Invision of control)控制反转:
是一种设计思想,就是原本在程序中需要手动创建对象的权利,交给spring框架管理
IOC的实现方式是工厂模式和反射机制
我们要了解以下两点:
(1)是谁控制谁? 容器控制对象
(2)为什么是反转? 从主动获取依赖对象到被动接受依赖对象的反转
Ioc容器是实现Ioc的载体,Ioc容器实际上就是个Map(key,value),map中存放各种对象
Ioc容器就像一个工厂一样,当我们需要创建一个对象时,只需要配置好配置文件或贴注解即可,完全不用考虑对象时如何被创建出来的
将对象相互依赖的关系交给ioc容器管理,这样可以很大程度简化应用开发
使用Ioc的话,我们只需要配置好,在需要的地方引用就好,这大大的增加了项目的可维护性且降开发难度
2、DI(Dependency Injection)依赖注入:
DI其实就是IOC的另外一种说法
我们其实了解以下四点就容易理解:
(1)谁依赖谁? 应用程序依赖IOC容器
(2)为什么依赖? 应用程序需要IOC容器提供外部资源
(3)谁注入谁? IOC向应用程序注入
(4)注入什么? IOC向应用程序注入外部资源、数据等
Spring 创建对象的过程中,将对象依赖属性通过配置设值给该对象
就是给对象的属性设置属性值
3、使用SpringIOC的步骤是什么?
- 添加Spring Jar包
- 创建Spring的配置文件
- 在配置文件中创建组件
- 增加组件依赖
4、如何使用Spring实现“控制反转”?
- 编写HelloSpring类,输出“Hello, Spring!”
- 字符串“Spring”通过Spring注入到HelloSpring类中
步骤:
(1)添加Jar包
(2)编写配置文件
<?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">
<!-- 以上是ioc的基础头部信息-->
<!--创建组件-->
<bean id="helloSpring" class="com.lss.ioc.HelloSpring">
<property name="who" value="Spring"></property>
</bean>
</beans>
(3)编写代码获取HelloSpring实例
package com.lss.ioc;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* Created by IntelliJ IDEA.
*
* @Author : 梁三岁
* @name :HelloSpring的测试类
* @create 2022/8/29 20:08
*/
public class HelloSpringTest {
@Test
public void hello(){
//先要创建应用的上下文对象
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//通过上下文对象,获得HelloSpring对象
//通过容器获得对象,这个容器就是Spring
HelloSpring helloSpring =(HelloSpring) context.getBean("helloSpring");
//调用其对象的方法
helloSpring.print();
}
}
package com.lss.ioc;
/**
* Created by IntelliJ IDEA.
*
* @Author : 梁三岁
* @name :HelloSpring实体类
* @create 2022/8/29 20:05
*/
public class HelloSpring {
private String who;
public void print(){
System.out.println("Hello,"+this.getWho()+"!");
}
public String getWho() {
return who;
}
public void setWho(String who) {
this.who = who;
}
}