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

相关推荐
雨落倾城夏未凉13 分钟前
5.通过拷贝构造函数复制一个对象,假如对象的成员中有个指针类型的变量,如何避免拷贝出来的副本中的该成员之下行同一块内存(等价于默认拷贝构造函数有没有缺点)
c++·后端
雨落倾城夏未凉15 分钟前
4.深拷贝VS浅拷贝
c++·后端
dl74318 分钟前
一文看懂spring配置原理
后端
拂晓银砾21 分钟前
Java数据结构-队列
java·数据结构
重生成为编程大王21 分钟前
Java ConcurrentHashMap 深度解析
java·开发语言
ERP老兵_冷溪虎山21 分钟前
IDEA 幽灵触手实锤!Python 文件一开,Anaconda 全局库让 JDK 编译慢 2-4 秒(附截图证据)
后端
阿华的代码王国29 分钟前
【Android】适配器与外部事件的交互
android·xml·java·前端·后端·交互
写bug写bug30 分钟前
分布式锁的使用场景和常见实现(下)
分布式·后端·面试
Postkarte不想说话30 分钟前
Debian13编译安装FreeSWITCH
后端
SimonKing34 分钟前
Mybatis批量插入,形式不同性能也不同
数据库·后端·程序员