[黑马程序员SSM框架教程]04 IOC-入门案例

news2024/11/24 22:43:07

1.IOC入门案例思路分析

  • 管什么?管bean(service和dao)
  • 如何将被管理的对象告知IOC容器?(配置)
  • 被管理的对象交给IOC容器,如何获取到IOC容器?(提供了个接口)
  • 如何获取到IOC中的bean?(接口方法)
  • 使用spring导入哪些坐标?(pom.xml)
  1. 案例分析
  • 创建好空maven项目
  • 创建spring的xml配置管理文件
    • 先在maven文件中导springframework包(记得刷新)
        <dependencies>
          <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-context</artifactId>
              <version>5.2.10.RELEASE</version>
          </dependency>
          <dependency>
              <groupId>junit</groupId>
              <artifactId>junit</artifactId>
              <version>4.12</version>
              <scope>test</scope>
          </dependency>
      </dependencies>
    
  • 如图: 插入后在resources文件夹中右键就能找到springConfig文件
    在这里插入图片描述
  • 配置Bean
    • 属性class:用于指示需要造对象的实现类的位置(不要配接口,接口不能造对象)
    • 属性id:给bean一个名字,用来在IOC容器中拿创建的对象(id不能重复)
    • xml文件如图
  <?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.导入spring的坐标spring-context,对应版本是5.2.10.RELEASE-->

    <!--2.配置bean-->
    <!--bean标签标示配置bean
    id属性标示给bean起名字
    class属性表示给bean定义类型-->
    <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"/>

    <bean id="bookService" class="com.itheima.service.impl.BookServiceImpl">
    </bean>

</beans>
  • 运行:创建main方法,在main方法中获取IOC容器
package com.itheima;

import com.itheima.dao.BookDao;
import com.itheima.service.BookService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App2 {
    public static void main(String[] args) {
        //1.获取IoC容器, ApplicationContext是接口,所以要new一个实现类,再告诉它配置文件名
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        //2.获取bean(根据bean配置id获取)
//        BookDao bookDao = (BookDao) ctx.getBean("bookDao");
//        bookDao.save();

        BookService bookService = (BookService) ctx.getBean("bookService");
        bookService.save();

    }
}
   
  • dao层代码
    • 接口
	package com.itheima.dao;

public interface BookDao {
    public void save();
}
  • 实现类
package com.itheima.dao.impl;

import com.itheima.dao.BookDao;

public class BookDaoImpl implements BookDao {
    public void save() {
        System.out.println("book dao save ...");
    }
}
  • service层代码
    • 接口
   package com.itheima.service;

public interface BookService {
    public void save();
}
  • 实现类
package com.itheima.service.impl;

import com.itheima.dao.BookDao;
import com.itheima.service.BookService;

public class BookServiceImpl implements BookService {
    private BookDao bookDao = new BookDaoImpl();

    public void save() {
        System.out.println("book service save ...");
        bookDao.save();
    }
}
  • 运行结果在这里插入图片描述
    注:只设计IOC操作,下章讲绑定bean,这样才算完整。

视频链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/365513.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kubernetes Nginx 发布

kubernetes发布nginx 目录 Nginx Pod启动Service访问Nginx 2.1. NodePort访问Nginx 2.2. ClusterIP访问Nginx 2.3. LoadBalancer访问Nginx 2.4. ExternalName访问NginxDeployment方式部署Nginx 3.1 Nginx Replicas Nginx Pod 启动 nginx-v1.yaml apiVersion: v1 kind: Pod…

基于SPI的增强式插件框架设计

很久之前&#xff0c;为了诊断线上的问题&#xff0c;就想要是能有工具可以在线上出问题的时候&#xff0c;放个诊断包进去马上生效&#xff0c;就能看到线上问题的所在&#xff0c;那该是多么舒服的事情。后来慢慢的切换到 java 领域后&#xff0c;这种理想也变成了现实&#…

Maven中开源的报表平台组件(自带页面+直连数据库)

借鉴的网址&#xff1a;https://www.w3cschool.cn/ureport/

一文搞懂秒杀系统,欢迎参与开源,提交PR,提高竞争力。早日上岸,升职加薪。

前言 秒杀和高并发是面试的高频考点&#xff0c;也是我们做电商项目必知必会的场景。欢迎大家参与我们的开源项目&#xff0c;提交PR&#xff0c;提高竞争力。早日上岸&#xff0c;升职加薪。 知识点详解 秒杀系统架构图 秒杀流程图 秒杀系统设计 这篇文章一万多字&#xff0c;…

PDMS二次开发(一)——PML类型程序类型与概念

目录前言一、PML类型与概念基础知识变量函数小例子注释PML表达式条件判断语句循环skip和break窗口程序在PDMS菜单栏中添加程序窗口自动定位PML常见控件前言 PDMS二次开发需要.net 有自带的PML语言和C# .net一般通常泛指的是C#语言 模型数据借助.NET的接口可以转换成数据库中的…

达梦8数据守护动态增加实时备库

实时主备环境 类型 业务IP 库名 实例名 PORT_NUM MAL_HOST MAL_INST_DW_PORT MAL_PORT MAL_DW_PORT 主库dm8p 192.168.1.223 DAMENG GRP1_RT_01 5236 10.0.0.223 45101 55101 65101 备库dm8s 192.168.1.224 DAMENG GRP1_RT_02 5236 10.0.0.224 45121…

模拟电路知识点总结(详细版)-- PN结

一、半导体&#xff1a;介于绝缘体和导体之间 二、本征半导体&#xff1a;纯净的半导体 1.晶体结构&#xff1a;正四面体 2.载流子&#xff1a; 本征激发:逃离共价键的束缚&#xff0c;成为自由电子 (本征半导体的本征激发&#xff0c;通常是由温度引起的晶体结构内部的共价键断…

免费基于springboot的OA自动化办公系统,挺漂亮的

大家好&#xff0c;我是锋哥&#xff0c;看到一个不错的springboot的OA自动化办公系统&#xff0c;分享下哈。 项目介绍 这是一个OA办公自动化系统&#xff0c;使用Maven进行项目管理&#xff0c;基于springboot框架开发的项目&#xff0c;mysql底层数据库&#xff0c;前端采…

GEE学习笔记 五十五:GEE编辑器绘制样本点的一个bug(官方在5.1给出反馈已经修复相关bug)

在做地物分类的时候我们会采用GEE在线采集样本方式&#xff0c;但是这个有一个问题需要注意&#xff0c;如果直接使用绘制矩形和点会将点变为 ee.Geometry.Point([xxx], null, false) 这种形式。出现的问题步骤如下&#xff1a; 1、绘制一个点和一个矩形 2、修改geometry为fea…

持续事务管理过程中的事件驱动

比较官方的定义&#xff1a;事件驱动是指在持续事务管理过程中&#xff0c;进行决策的一种策略&#xff0c;即跟随当前时间点上出现的事件&#xff0c;调动可用资源&#xff0c;执行相关任务&#xff0c;使不断出现的问题得以解决&#xff0c;防止事务堆积。在计算机编程、公共…

WPF五种布局

GridGrid为WPF中最常用的布局容器, 作为View中的主要组成部分, 负责框架中整体的页面布局。标签含义ShowGridLines可以设置行业的边距线的显示Grid. RowDefinitions可以创建任意行, 进行固定高度与百分比高度设置Grid. ColumnDefinitions可以创建任意列, 进行固定宽度与百分宽度…

二氧化碳地质封存技术应用前景及模型构建实践方法与讨论

2022年七月七日&#xff0c;工业和信息化部、发展改革委、生态环境部关于印发工业领域碳达峰实施方案的通知落地。全国各省份积极响应&#xff0c;纷纷出台地方指导文件&#xff0c;标志着我国碳减排事业的全面铺开。二氧化碳地质封存技术作为实现我国“双碳”目标的重要一环&a…

量化策略——准备4 python量化因子测算绘图

文章目录因子测算框架1. 预处理股票数据2. 指标测算3. 测算结果整理4. 结果绘图量化因子的测算通常都是模拟交易&#xff0c;计算各种指标&#xff0c;其中&#xff1a;测算需要用到的第三方库&#xff1a;numpy&#xff0c;pandas&#xff0c;talib绘图需要用到的第三方库&…

研报精选230223

目录 【行业230223开源证券】计算机&#xff1a;政策节奏超预期&#xff0c;数据要素市场加速发展【个股230223光大证券_鲁商发展】投资价值分析报告&#xff1a;剥离地产业务、战略转型大健康产业&#xff0c;化妆品“国货之光”待发力【个股230223华安证券_国际医学】综合医疗…

数据库恢复技术

一&#xff0c;事务的基本概念 1.事务 事物是用户定义的一个数据库操作序列&#xff0c;这些操作要么全做&#xff0c;要么全不做&#xff0c;是一个不可分割的工作单位。 事物和程序是两个概念。一般的讲&#xff0c;一个程序中包含多个事物。 事物的开始与结束可以由用户…

瓴羊Quick BI智能报表,轻松搞定复杂“中国式报表”

随着企业的不断成长&#xff0c;内部管理、运营所需的报表往往越做越复杂。不管是对一个职场新人&#xff0c;还是专业的数据分析人员来说&#xff0c;制作复杂的“中国式报表”都是一件让人很痛苦的事。正因如此&#xff0c;越来越多的企业开始使用瓴羊Quick BI智能报表&#…

FPGA纯verilog代码实现H.264/AVC视频解码,提供工程源码和技术支持

目录1、前言2、硬件H.264/AVC视频解码优势3、vivado工程设计架构4、代码架构分析5、vivado仿真6、福利&#xff1a;工程代码的获取1、前言 本设计是一种verilog代码实现的低功耗H.264/AVC解码器(baseline )&#xff0c;硬件ASIC设计&#xff0c;不使用任何GPP/DSP等内核&#…

最新Python异步编程详解

我们都知道对于I/O相关的程序来说&#xff0c;异步编程可以大幅度的提高系统的吞吐量&#xff0c;因为在某个I/O操作的读写过程中&#xff0c;系统可以先去处理其它的操作&#xff08;通常是其它的I/O操作&#xff09;&#xff0c;那么Python中是如何实现异步编程的呢&#xff…

Python每日一练(20230223)

目录 1. 合并区间 2. 单词接龙 3. N皇后 附录&#xff1a;回溯算法 基本思想 一般步骤 1. 合并区间 难度&#xff1a;★★ 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回…

【虚拟仿真】Unity3D中实现鼠标的单击、双击、拖动的不同状态判断

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 这篇文章分享一下虚拟仿真项目中经常碰到鼠标事件控制代码。 …