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

相关推荐
YuTaoShao36 分钟前
【LeetCode 热题 100】56. 合并区间——排序+遍历
java·算法·leetcode·职场和发展
程序员张339 分钟前
SpringBoot计时一次请求耗时
java·spring boot·后端
llwszx4 小时前
深入理解Java锁原理(一):偏向锁的设计原理与性能优化
java·spring··偏向锁
云泽野4 小时前
【Java|集合类】list遍历的6种方式
java·python·list
二进制person5 小时前
Java SE--方法的使用
java·开发语言·算法
小阳拱白菜6 小时前
java异常学习
java
程序员岳焱7 小时前
Java 与 MySQL 性能优化:Java 实现百万数据分批次插入的最佳实践
后端·mysql·性能优化
FrankYoou7 小时前
Jenkins 与 GitLab CI/CD 的核心对比
java·docker
麦兜*7 小时前
Spring Boot启动优化7板斧(延迟初始化、组件扫描精准打击、JVM参数调优):砍掉70%启动时间的魔鬼实践
java·jvm·spring boot·后端·spring·spring cloud·系统架构
KK溜了溜了7 小时前
JAVA-springboot 整合Redis
java·spring boot·redis