Spring入门篇

Cold的窝 / 2023-05-11 / 原文

Spring Frameword

  • Spring Framework是Spring生态圈中最基础的项目,是其他项目的根基

image-20230228222030434

1.1 Spring Frameword系统架构图

image-20230228222340217

1.2 Spring Frameword学习路线

image-20230228222518098

1.3 核心概念

  • 代码现状
    • 耦合度偏高
  • 解决方案
    • 使用对象时,在程序中不要主动new产生对象,转换为由外部提供对象
  • IoC(Inversion of Control)控制反转
    • 对象的创建控制权由程序转到外部,这种思想为控制反转

image-20230228222947261

1.3.1 IoC ( Inversion of Control ) 控制反转

  • 使用对象时,由主动new产生对象转换为由外部提供对象,此过程中对象创建控制权由程序转移到外部,此思想称为控制反转

1.3.2 Spring技术对IoC思想进行了实现

  • Spring提供了一个容器,称为IoC容器用来充当IoC思想中的“外部”
  • IoC容器负责对象的创建、初始化等一系列工作,被创建或被管理的对象在IOC容器中统称为Bean

1.3.3 DI ( Dependency Injection ) 依赖注入

  • 在容器中建立bean与bean之间的依赖关系的整个过程,称为依赖注入

image-20230228223319579

1.3.4目标:充分解耦

  • 使用IoC容器管理bean (IoC)
  • 在IoC容器内将有依赖关系的bean进行关系绑定 (DI)

1.3.5最终效果

  • 使用对象时不仅可以直接从IoC容器中获取,并且获取到的bean已经绑定了所有的依赖关系

1.4IoC入门

  1. 导入Spring坐标
<dependency>
     <groupId>org.springframeword</groupId>
     <artifactId>spring-context</artifactId>
     <version>5.2.10.RELEASE</version>
</dependency>
  1. 定义Spring管理的类(接口)
public interface BookService{
	public void save();
}
public class BookServiceImpl implements BookService {

	private BookDao bookDao = new BookDaoImpl();
	
	public void save(){
		boolDao.save();
	}
}
  1. 创建Spring配置文件,配置对应类作为Spring管理的bean
<?xml version="1.” encoding="UTF-8"?>
<beans xmIns="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">
    
    
<bean id="bookService"class="com.itheima.service.impl.BookServiceImpl"></bean>

</beans>

注意事项:bean 定义时id属性在同一个上下文中不能重复

  1. 初始化IoC容器 ( Spring核心容器/Spring容器 ),通过容器获取bean
public class App {
	public static void main(String[] args) {
		//加载配置文件得到上下文对象,也就是容器对象
    	ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        //获取资源
		BookService bookService = (BookService)tx.getBean("bookService");
    	bookService.save();
}