当前位置: 首页 > article >正文

JavaWeb学习日记(十三)Springboot原理+Bean管理

 一、Springboot配置优先级

二、Bean管理

获取bean:

package com.itheima;

import com.itheima.controller.DeptController;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;

@SpringBootTest
class SpringbootWebConfig2ApplicationTests {

    //获取bean对象
    @Autowired
    private ApplicationContext applicationContext; //IOC容器对象
    @Test
    public void testGetBean(){
        //根据bean的名称获取
        DeptController bean1 = (DeptController) applicationContext.getBean("deptController");
        //声明一个bean对象没有指定名称,默认名称为类名(首字母小写)
        System.out.println(bean1);
        //根据bean的类型获取
        DeptController bean2 = applicationContext.getBean(DeptController.class);
        System.out.println(bean2);
        //根据bean的名称 及 类型获取
        DeptController bean3 = applicationContext.getBean("deptController", DeptController.class);
        System.out.println(bean3);
    }
}

声明一个bean对象没有指定名称,默认名称为类名(首字母小写)

bean作用域:

 第三方bean:

 如果第三方bean需要依赖其它bean对象,直接在bean定义方法中设置形参即可,容器会根据类型自动装配。

 三、SpringBoot原理

起步依赖:

起步依赖原理:

依赖传递

自动配置:

自动配置原理:

方案一:ComponentScan组件扫描

方案二:Import导入

Import导入普通类:

Import导入配置类:

Import导入ImportSelector的实现类:

@EnableXxxx注解,封装@Import注解:

原理总结:

 

@Conditional注解:

@ConditionalOnClass:

@ConditionalOnMissingBean: 

如果用户引入了这个依赖时,自己定义了这个bean,那就用自己定义的,否则就用依赖中的bean

@ConditionalOnProperty:

四、自定义starter(起步依赖)

 

五、总结

标准的三层架构:

Controller层负责接受请求,响应数据

Service层(业务层)负责业务逻辑的处理

Dao层(数据访问层/持久层)处理数据访问操作,完成数据库中的增删改查操作

前端发送请求到Controller层,Controller调用Service进行逻辑处理,Service再调用Dao层完成数据访问。

如果说在执行具体业务处理之前需要进行一些通用的业务处理,如进行统一的登录校验或者字符编码时,可以借助JavaWeb中三大组件中的过滤器Filter或者Spring中提供的拦截器Intercepter实现

为了实现三层架构层与层之间的解耦,学习了Spring框架中的第一大核心IOC与DI。

IOC控制反转:将对象创建的控制权由应用程序自身交给外部容器,即IOC容器或者Spring容器,声明为容器中的bean对象

DI依赖注入:指容器为程序提供运行时所需要的资源


http://www.kler.cn/a/571984.html

相关文章:

  • Hive大表和小表查询优化方案探索
  • HTTP 状态代码 501 502 问题
  • Windows 11 smb 共享文件, 新电脑需要用户名和密码
  • 操作系统启动——前置知识预备
  • 《OpenCV》——dlib(人脸应用实例)
  • 机器学习相关知识概述
  • Leetcode 215 数组中的第K个最大元素
  • Libgdx游戏开发系列教程(4)——显示中文文字
  • Kubernetes教程(三)Docker容器命令
  • 股市现期驱动因子
  • go:windows环境下安装Go语言
  • AWS中使用CloudFront分发API Gateway
  • 计算机毕业设计SpringBoot+Vue.js工作流程管理系统(源码+文档+PPT+讲解)
  • 迷你世界脚本状态接口:Buff
  • 360图片爬虫|批量爬取图片
  • Vue05
  • QT-自定义参数设计框架软件
  • 爬虫(持续更新ing)
  • wordpress子分类调用父分类名称和链接的3种方法
  • Android 系统开发的指导文档