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

spring 学习路线梳理(一)

spring 整体架构

学习思路:

spring ioc (控制反转):

控制反转的出现是为了方便代码的解藕。没有ioc的时候都需要自己去new。如果一个接口有多个实现类,每次换实现类的时候需要重新编译,现在交给spring 的容器帮助我们管理。需要什么实现类,去找spring的容器取就可以了(这个就是DI注入)。

xml 实现代码:读取配置,封装成  BeanDefinition 创建bean
1.启动的是一个spring boot项目

2.创建 dao,server ,controller , applicationContext.xml
3.在 applicationContext.xml 配置需要spirng帮我们创建的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.通过 xml 配置的方式将刚才创建的dao 和 service 的实现类 告诉 Spring,帮我们创建bean <-->
    <bean id="loginDao" class="com.drawing.springsecuritydemo.dao.impl.LoginDaoImpl"/>

    <bean id="loginService" class="com.drawing.springsecuritydemo.service.impl.LoginServiceImpl"/>
</beans>
4.获取容器,从容器中拿到spring帮我们创建的bean
//@SpringBootApplication
public class SpringSecurityDemoApplication {

    public static void main(String[] args) {
        //SpringApplication.run(SpringSecurityDemoApplication.class, args);

        ClassPathXmlApplicationContext xct
                = new ClassPathXmlApplicationContext("applicationContext.xml");

        ILoginService bean = (ILoginService) xct.getBean("loginService");

        String login = bean.login();
        System.out.println(login);
    }

}

DI(依赖注入)

注入我们需要的类

setter注入

1.在service中注入dao ,通过set方法注入
@Slf4j
public class LoginServiceImpl implements ILoginService {

    public ILoginDao iLoginDao;

    //通过set方法 注入 需要的dao
    public void setiLoginDao(ILoginDao iLoginDao) {
        this.iLoginDao = iLoginDao;
    }

    @Override
    public String login() {
        log.info("{}","login validator send service");
        iLoginDao.login();
        return "login success !!!";
    }
}
2.在xml配置文件中定义需要注入到 service中的引用

3.查看配置后调用 运行的结果:

构造器注入

1.在service中注入dao ,通过构造器注入

2.在xml配置文件中定义需要注入到 service中的引用

scope 的类型:

bean的实例化方式(spring通过什么方式帮我们创建的对象)

1.构造方法:

   调用main方法获取对象的时候,调用LoginDaoImpl的构造方法

2. 静态方法创建的bean

   定义工厂中的静态方法

   

  配置调用的工厂方法

bean 初始化和销毁之前触发的方法

要实现   InitializingBean, DisposableBean 两个接口中的方法

@Slf4j
public class LoginServiceImpl implements ILoginService , InitializingBean, DisposableBean {

    public ILoginDao iLoginDao;

    //通过set方法 注入 需要的dao
    public void setiLoginDao(ILoginDao iLoginDao) {
        this.iLoginDao = iLoginDao;
    }

    @Override
    public String login() {
        log.info("{}","login validator send service");
        iLoginDao.login();
        return "login success !!!";
    }

    //销毁之前的操作
    @Override
    public void destroy() throws Exception {
        System.out.println("destroy");
    }

    //初始化之前的操作
    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("afterPropertiesSet");
    }
}

同时要关闭容器

打印的结果:


http://www.kler.cn/news/368457.html

相关文章:

  • 架构师备考-数据库设计、实施和维护
  • AAPL: Adding Attributes to Prompt Learning for Vision-Language Models
  • 时间序列预测(九)——门控循环单元网络(GRU)
  • 面包种类图像分割系统:多层面改进
  • Linux功法之文件切割术
  • HTML+JavaScript案例分享: 打造经典俄罗斯方块,详解实现全过程
  • Apache Seata 新版本集成了 RocketMQ 事务消息
  • Supabase:当开源遇上实时数据库服务
  • 如何防止服务器被渗透攻击
  • 在flask微服务中使用调度器设置定时任务:BackgroundScheduler
  • 怎样找到台式电脑的ip地址?系统不同,方法各异
  • 手机玩黑色沙漠?GameViewer远程玩黑色沙漠教程
  • 采用Excel作为可视化设计器的开源规则引擎 NopRule
  • C# 创建型设计模式之----单例模式
  • linux网络编程1——IO管理(select/poll/epoll)
  • Linux普通用户赋予Root权限问题
  • 【H2O2|全栈】CSS案例章节(一)——圣杯布局和双飞翼布局
  • 【Elasticsearch】Elasticsearch中FST的Off-Heap优化详解
  • 解决 Oracle 数据库错误 ORA-12516:监听器无法找到匹配协议栈的处理程序
  • AcWing 3534:矩阵幂 ← 矩阵快速幂
  • K8s安装手册
  • Spring 全家桶版本更新
  • 后台管理系统的通用权限解决方案(三)SpringBoot整合Knife4j生成接口文档
  • 使用 jnitrace 分析 native 方法调用过程
  • 容器化与微服务
  • Elasticsearch的实战应用