初识Spring(IOC,DI,创建流程)

本文介绍了Spring框架的核心概念,包括IOC(控制反转)和DI(依赖注入),阐述了它们如何降低代码耦合。通过实例展示了SpringBean的类注册过程,从创建pom.xml依赖,到配置XML文件,以及使用@Controller等注解注册类。同时,详细说明了通过getBean方法获取Bean对象的两种方式,并总结了Spring项目创建的基本流程。
摘要由CSDN通过智能技术生成

Spring Framework 布局图

在这里插入图片描述

IOC 控制反转

(Inversion of Control,控制反转) ,是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。

使用 IOC 之前,我们需要自己 new 对象,相当于对象的创建权和销毁权在我们手中,而使用 IOC 之后,相当于将控制权交给第三方(Spring容器)进行管理。

DI 依赖注入

DI (Dependency Injection,依赖注入) 是实现IoC的方法之一。所谓依赖注入,就是由IOC容器在运行期间,动态地将某种依赖关系注入到对象之中。

总结: IOC 控制反转是一种程序设计思想,而 DI (依赖注入)是实现控制反转的技术实现

Spring Bean 类注册

@Controller —— 控制器(web逻辑处理层)
@Service —— 业务逻辑层 Article(CRUD)
@Component —— 通用组件
@Repository —— 数据库持久层,操作数据库数据(CRUD)

在spring项目中创建对象

  1. pom.xml中添加引用
<properties>
        <java.version>1.8</java.version>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring-framework.version>5.2.10.RELEASE</spring-framework.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring-framework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring-framework.version}</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.16</version>
        </dependency>
    </dependencies>
  1. 创建一个类,然后得到它的父类对象,需要配置xml文件来扫描spring根路径
package org.example;

import org.example.controller.LoginController;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {

    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");

    }

}

  1. 在资源中创建次xml文件,有固定的格式,修改context的路径为扫描路径
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">

    <context:component-scan base-package="org.example"/>

</beans>
  1. 在路径下创建controller,添加@Controller注解来注册此类到spring项目中
package org.example.controller;

import org.springframework.stereotype.Controller;

@Controller
public class LoginController {

}
  1. 使用getbean方法取到创建的新类
  • 可以使用字符串的格式
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        LoginController loginController = (LoginController) context.getBean("loginController");
        System.out.println(loginController);
        //关闭容器
        ((ClassPathXmlApplicationContext)context).close();
    }

要注意的是getbean中的参数是需要有规范的,
第一个字母为大写,后面为小写,则需要第一个字母小写,如Login,需要变为login
前三个字母为大写,则不需要改变,如UMLlala,不用改变

ps:如果不确定需要改的格式,则可以用这种方式来看需要改的格式
System.out.println(Introspector.decapitalize("LoginController"));

  • 参数也可以用类的方式
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        LoginController loginController = context.getBean(LoginController.class);
        System.out.println(loginController);
        //关闭容器
        ((ClassPathXmlApplicationContext)context).close();
    }

同样的,都是可以得到该类的
在这里插入图片描述

总结 Spring 创建流程

  1. 创建一个 maven
  2. 创建一个启动类,创建 ApplicationContent 对象,设置一个 XML
  3. XML 规定了依赖主入对象的根路径
  4. 依赖注入
    a)Controller —— 前端业务交互层【参数效验】
    b)Service —— 业务处理的中间层【业务处理】
    c)Reoisitory —— 数据持久层
    d)Component —— 通用对象工具类
  5. 得到 bean 对象
    a)注解:@Autowrited、@Resource
    b)ApplicationContent. getBean()
    【getBean(“类名”) —— 首字母大写,对应类名应该是首字母小写;如果首字母和第二个字母都是大写,那么对应类名不改变。“Abc” -> “abc”,“ABC” -> “ABC”】
    【getBean(类型) 得到bean。getBean(Login.class)】
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值