Spring快速复习--开发步骤

93 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第28天,点击查看活动详情

一、Spring回顾

Spring简介

1、Spring是轻量级的开源的JavaEE框架

JavaEE就是用java开发企业级的应用,它是一个规范和标准

Spring框架就是实现了JavaEE这个规范,所以Spring常用来开发企业级的应用

2、Spring可以解决企业应用开发的复杂性

3、Spring有两个核心部分:IOC和Aop

Spring架构

image-20220610113048217

IOC

IOC(Inversion of Control):控制反转,把创建对象过程交给Spring进行管理

在一个软件系统中,对象A依赖于对象B,当对象A需要对象B的时候需要自己创建对象B,这个创建对象的控制权是掌握在对象A手中的。在引入IOC容器之后,当对象A在需要对象B的时候,由IOC容器主动创建并注入A中,从而实现了解耦。这个过程创建对象的控制权全部交给了IOC容器,这就是控制反转

DI

依赖注入

依赖注入是IOC的实现方式,前面我们说ioc是控制反转,它这个反转其实就是获得依赖对象的过程被反转了。依赖注入就是IOC在运行期间,动态地将依赖关系注入到对象之中

依赖注入(DI)和控制反转(IOC)是从不同的角度的描述的同一件事情

二、未使用Spring程序开发步骤

com.itheima.dao.UserDaoImpl
    create 方法;
    delete 方法;
    update 方法;
    select 方法;
    
com.itheima.service.UserServiceImpl
    //通过 new 一个 UserDaoImpl 对象来使用
    UserDao userDao = new UserDaoImpl();

在业务层调用持久层的方法时,需要先new持久层的对象,然后调用持久层方法进而操作数据库。1`1

未使用Spring之前都是需要什么对象就new什么对象,这样也能做,不足点是耦合性太强。

怎么解耦呢?

应天命而产生。 现指适应时机而产生

Spring框架就应运而生就出来了,它可以让对象都在一个容器里,需要的时候直接通过spring的api从容器中获取

Spring框架是怎么让对象都在容器里的呢?

学习过Spring框架后,被放在容器里的对象就成为bean

前面的学习是通过配置文件的形式以<bean>标签来把对象放到容器里

是通过xml配置文件的形式用特殊的标签,指定对象的全类名和id(id是用来唯一标识的),Spring框架通过id获取Bean的全类名,之后通过java中的反射机制创建对象

image-20220608111508745

三、使用Spring程序开发步骤

  1. 通过maven导Spring相关的包
  2. 编写dao接口和实现类
  3. 创建Spring核心配置文件
  4. 在spring配置文件中配置UserDaoImpl
  5. 使用Spring的API获得Bean实例

1、通过maven导Spring相关的包

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
​
    <groupId>com.heima</groupId>
    <artifactId>spring_ioc</artifactId>
    <version>1.0-SNAPSHOT</version>
​
​
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.0.5.RELEASE</version>
        </dependency>
    </dependencies></project>

2、编写dao接口和实现类

public interface UserDao {
    void save();
}

实现类

package com.heima.impl;
​
import com.heima.UserDao;
​
public class UserDaoImpl implements UserDao {
    @Override
    public void save() {
        System.out.println("save running.......");
    }
}

3、创建Spring核心配置文件

image-20220608182633608

4、在spring配置文件中配置UserDaoImpl

<?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">
​
    <bean id="userDao" class="com.heima.impl.UserDaoImpl">
​
    </bean></beans>

5、使用Spring的API获得Bean实例

这里new的ClassPathXmlApplicationContext其实就相当于spring的客户端对吧,

之后通过spring客户端api获取配置文件中的对象,从而调用方法

package com.heima.demo;
​
import com.heima.UserDao;
import org.springframework.context.support.ClassPathXmlApplicationContext;
​
public class UserDaoDemo {
    public static void main(String[] args) {
        ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("application.xml");
        UserDao userDao = (UserDao) app.getBean("userDao");
        userDao.save();
    }
}