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配置

相关推荐
Tigshop开源商城2 小时前
『物流设置+SEO优化』Tigshop开源商城系统 JAVA v5.8.26 版本更新!
java·开源商城系统·tigshop
Tigshop开源商城4 小时前
『订单税率+收货地址校验国家字段』功能上新|跨境运营更高效,Tigshop开源商城系统 JAVA v5.8.23 版本更新
java·开源商城系统·tigshop
养肥胖虎4 小时前
Docker学习笔记:后端、数据库和反向代理怎么一起跑起来
后端·nginx·docker·postgresql·go·部署
REDcker4 小时前
C++变量存储与ELF段布局详解 从const全局到rodata与nm_readelf验证实践
java·c++·面试
晓杰'5 小时前
从0到1实现 Balatro 游戏后端(2):NestJS框架搭建与项目结构设计
后端·websocket·typescript·node.js·游戏开发·项目实战·nestjs
无所事事O_o5 小时前
二次验证码TOTP 使用说明
后端·二次验证码·谷歌验证器
ltl6 小时前
Multi-Head Attention:为什么要分多个头
后端
kobesdu6 小时前
【ROS2实战笔记-19】ROS2 生命周期节点的启动顺序、状态转换陷阱与热备方案
java·前端·笔记·机器人·ros·ros2
neo_Ggx236 小时前
Maven 版本管理详解:SNAPSHOT、Release 与 Nexus 仓库的区别和影响
java·maven
matlabgoodboy6 小时前
软件开发定制小程序APP帮代做java代码代编写C语言设计python编程
java·c语言·小程序