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

相关推荐
anno2 分钟前
别再把文档“一刀切”:用 LangChain.js 做好 RAG 的第一公里
前端·后端
用户713874229003 分钟前
claude_rules 深度解析:Claude Code 的模块化路径作用域规则
后端
IvorySQL3 分钟前
云环境下PostgreSQL的Cgroup内存管理实践
java·数据库·postgresql
卡卡罗特AI4 分钟前
曾经狂推的 Superpowers,今天我终于把它卸载了! 臃肿,Token吞金兽!
后端·chatgpt·ai编程
不定积分要+C_yyy5 分钟前
Java基础核心精讲:基本数据类型与包装类区别、自动装箱拆箱与缓存陷阱实战解析
java·开发语言
jvmind_dev6 分钟前
第三章:GC 日志深度分析(上)——多版本、多收集器的统一解析
java·agent
xingxiliang8 分钟前
ReliableAgent:类似工程级可用的agent示例
java·开发语言·agent
用户7138742290018 分钟前
深入理解 Claude Code 的 Skill 机制:可复用能力与上下文成本的平衡术
后端
亦暖筑序20 分钟前
AgentScope-Java 入门:保存评审状态并生成 Markdown 报告
java·人工智能·后端
invicinble38 分钟前
关于微服务基本框架搭建--fegin最小使用demo
java·spring boot·微服务