Spring-Day1

Spring

1.Spring Framework系统架构

  • Core Container:核心容器

  • Data Access:数据访问

  • Data Integration:数据集成

  • Web:Web开发

  • AOP:面向切面编程

  • Aspects:AOP思想

  • Test:单元测试与集成测试

2.核心概念

  • IOC(Inversion of Control)控制反转

    对象的创建控制权由程序转移到外部

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

    Spring提供了一个容器,称为Ioc容器 来充当IoC思想中的外部

    IoC容器负责对象的创建、初始化等一系列工作,被创建或被管理的对象在Ioc容器中被称为Bean

  • DI(Dependency Injection)依赖注入

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

  • 目标:充分解耦

    使用IoC容器管理bean(IoC)

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

  • 最终效果

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

3.IoC入门

  1. 导入Spring坐标

    复制代码
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.2.8.RELEASE</version>
    </dependency>
  2. 定义Spring管理的类(接口)

    复制代码
    public interface BookService {
        public void save();
    }
    复制代码
    public class BookServiceImpl implements BookService {
        private BookDao bookDao = new BookDaoImpl();
        public void sabe() {
            bookDao.save()
        }
    }
  3. 创建Spring配置文件,配置对应类作为Spring管理的bean

    复制代码
    <?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">
    <!--       1.导入spring的坐标spring-content,对应版本5.2.8.RELEASE-->
    <!--       2.配置bean-->
    <!--    bean标签表示配置bean-->
    <!--    id属性表示给bean起名字-->
    <!--    class属性表示给bean定义类型-->
        <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"/>
        <bean id="bookService" class="com.itheima.service.impl.BookServiceImpl"/>
    </beans>
  4. 初始化Ioc容器,通过容器获取bean

    复制代码
    public class App {
        public static void main(String[] args) {
            //3.获取IoC容器
            ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
            //4.获取bean
            BookDao bookDao = (BookDao) ctx.getBean("bookDao");
            bookDao.save();
            //5.获取bean
            BookService bookService = (BookService) ctx.getBean("bookService");
            bookService.save();
        }
    }

4.DI入门

  1. 删除使用new 的形式创建对象的代码

    复制代码
    public class BookServiceImpl implements BookService{
        //5.删除业务层中使用new的方式创建的dao对象
        private BookDao bookDao;
    ​
        public void save() {
            System.out.println("book service save ...");
            bookDao.save();
        }
        //6.提供对应的set方法
        public void setBookDao(BookDao bookDao) {
            this.bookDao = bookDao;
        }
    }
  2. 配置service与dao之前的关系

    复制代码
     <bean id="bookService" class="com.itheima.service.impl.BookServiceImpl">
    <!--        7.配置service与dao的关系-->
    <!--        property标签表示配置当前bean的属性-->
    <!--        name属性表示配置哪一个具体的属性-->
    <!--        ref属性表示参照哪一个bean-->
            <property name="bookDao" ref="bookDao"/>
        </bean>
    ​
    //ref的"bookDao"指的是当前容器bean的id

5.bean配置

相关推荐
callJJ4 分钟前
Spring AI ImageModel 完全指南:用 OpenAI DALL-E 生成图像
大数据·人工智能·spring·openai·springai·图像模型
李日灐4 分钟前
C++进阶必备:红黑树从 0 到 1: 手撕底层,带你搞懂平衡二叉树的平衡逻辑与黑高检验
开发语言·数据结构·c++·后端·面试·红黑树·自平衡二叉搜索树
晔子yy10 分钟前
如何设计让你的程序同时处理10w条数据
java
Yvonne爱编码16 分钟前
链表高频 6 题精讲 | 从入门到熟练掌握链表操作
java·数据结构·链表
lpfasd12320 分钟前
物联网后端岗位java面试题
java·物联网·php
毕设源码李师姐22 分钟前
计算机毕设 java 基于 java 的图书馆借阅系统 智能图书馆借阅综合管理平台 基于 Java 的图书借阅与信息管理系统
java·开发语言·课程设计
忆~遂愿22 分钟前
Runtime 上下文管理:计算实例的生命周期、延迟最小化与上下文切换优化
java·大数据·开发语言·人工智能·docker
powerfulhell27 分钟前
寒假python作业5
java·前端·python
1尢晞128 分钟前
Java学习
java·开发语言
阿杰真不会敲代码30 分钟前
Mybatis-plus入门到精通
java·tomcat·mybatis