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依赖注入:指容器为程序提供运行时所需要的资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值