Spring学习笔记:基于XML文件和注解两种配置方式实现spring框架的IOC和DI

2023-11-07

首先打开IntelliJ IDEA,创建一个Maven项目spring-lesson,删除src文件夹,只保留maven依赖对应的pom文件,这个项目作为父工程,在pom文件中增加<packaging>节点,节点内容为pom,表示构建聚合工程,如下:

 <groupId>com.winning</groupId>
  <artifactId>spring-lesson</artifactId>
  <version>1.0-SNAPSHOT</version>
  <!--表示构建聚合工程-->
  <packaging>pom</packaging>

在父工程上添加一个新的模块,模块名称为day1-spring,首先哟啊引入spring相关依赖,这里主要是spring-context的依赖,如下:

<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.2.5.RELEASE</version>
</dependency>

然后添加一个包:com.winning.dao,增加一个接口TestDAO,其中有一个hello()方法:

package com.winning.dao;

public interface TestDAO {
    void hello();
}
package com.winning.dao;

import org.springframework.stereotype.Repository;

@Repository
public class TestDAOImpl implements TestDAO {
    @Override
    public void hello() {
        System.out.println("-->dao层TestDAOImpl执行hello()方法!");
    }
}

继续添加包,com.winning.service,创建TestService接口,其中有个CallDaoMethod方法:

package com.winning.service;

import com.winning.dao.TestDAO;

public interface TestService {

    void CallDaoMethod();
    void  setTestDAO(TestDAO testDAO);
}
@Service
public class TestServiceImpl implements TestService {

    @Autowired // 把spring容器中TestDAO类型实例注入到testDAO属性中
    TestDAO testDao;

    @Override
    public void CallDaoMethod() {

        System.out.println("-->service层TestServiceImpl执行CallDaoMethod()方法!");
        testDao.hello();
    }

    @Override
    public void setTestDAO(TestDAO testDAO) {
        this.testDao = testDAO;
    }

}

上面的service层代码中,有一个TestDAO类型的属性,要保证该属性能够注入进来,必须对属性提供一个set方法。


接下来我们来通过xml配置文件的方式实现java bean对象的管理,在resources文件夹下添加一个applicationContext.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">

    <bean id="testDao" class="com.winning.dao.TestDAOImpl" />
    <bean id="testService" class="com.winning.service.TestServiceImpl">
        <!--配置属性的依赖注入,前提是属性有set方法-->
        <property name="TestDAO" ref="testDao" />
    </bean>
</beans>

这里需要注意的是,id必须唯一,class节点表示类路径,也就是包名+类名。同时,在service层注入DAO层对象时,我们通过属性注入的方式,ref节点对应属性名称。


接下来我们来测试,通过ClassPathXmlApplicationContext这个类来加载我们的xml配置文件,参数名称为xml文件名,如下:

ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

下面我们通过这种方式,来分别获取DAO层和service层对象

//通过xml文件管理java bean对象
        ApplicationContext context =
                new ClassPathXmlApplicationContext("applicationContext.xml");

        Object testDaoObj = context.getBean("testDao");
        System.out.println( testDaoObj );

        //TestService.class,表示返回指定Bean类型,无需用Object接收
        TestService testService = context.getBean("testService", TestService.class);
        testService.CallDaoMethod();

运行看一下结果:

已经成功了,篇幅有限,注解实现方式下次再分享吧。 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring学习笔记:基于XML文件和注解两种配置方式实现spring框架的IOC和DI 的相关文章

随机推荐

  • DevOps教程:Azure DevOps

    注 本文译自 https www javatpoint com azure devops Azure DevOps Azure DevOps 也称为 Microsoft Visual Studio 团队服务 VSTS 它是为云构建的一组协作
  • Python爬虫学习笔记(二)————爬虫简介

    目录 1 爬虫概念 2 爬虫核心 3 爬虫分类 通用爬虫 聚焦爬虫 4 反爬手段 1 User Agent 2 代理IP 3 验证码访问 4 动态加载网页 5 数据加密 1 爬虫概念 通过一个程序 根据Url http www taobao
  • Unity编辑器拓展(二)实现快速配置书页内容

    自定义窗口使用主要方法 SerializedObject FindProperty EditorWindow GetWindow lt gt serializedObject Update EditorGUILayout PropertyF
  • vue引入个性化字体

    一 首先在字体网选择下载自己喜欢的字体字体网链接 二 在vue静态资源文件夹assets目录下创建一个font文件夹 把下载的ttf文件放在font文件夹里面 三 在src目录下创建一个style文件夹 创建一个全局css变量文件 vue引
  • 判断浏览器(微信、微博、QQ)、操作系统、横竖屏等

    一 根据浏览器判断URL跳转 var browserOfMobile wapUrl http m baidu com versions function var u navigator userAgent return mobile u m
  • 基于java web新生入学报到系统

    使用该系统能方便的录入校园新闻 学生 班级等信息 并能实现管理员对新生报到的管理 主要角色分为学生 财务处 管理员 实现了宿舍楼管理 学籍建立 辅导员班级管理 宿舍安排 报到流程等模块 作为一款毕业设计 课程设计 二次开发的模板 是不可多得
  • APS系统到底是什么?为什么许多企业纷纷选择APS系统?

    随着科技的进步 信息处理技术和数据储存能力 提升了规划技术的规划时间和规划效益 大幅度提升了应用先进的解决生产排程问题的可行性 APS高级计划与排程 Advanced Planning and Scheduling 是一种支持计划或计划的信
  • wxWidgets介绍 —— 一文全面了解wxWidgets

    概述 wxWidgets由爱丁堡大学的Julian Smart于1992年创立 最初是一个用于创建在Unix和Windows上可移植的应用程序的项目 后来它已成长为支持MacOS GTK 以及许多其他工具包和平台的界面库 有关更多详细信息
  • MacBook Pro(13 英寸,2011 年初)A1278安装win10无声解决

    用驱动人生 然后扫描驱动 把声卡的驱动升级下就OK了
  • python 面试题 获取当前目录下所有文件名【递归】

    递归的逻辑比较简单 如下 进入到当前路径下时 先创建一个空列表A来保存文件名 遍历当前文件夹中每一项 如果是文件 就放到列表中 如果是文件夹 那就递归进去 返回值是内层的文件列表 归并到A中 最终返回列表A 代码如下 import os d
  • # 子网掩码

    子网掩码 1 概念简介 子网掩码又叫网络掩码 地址掩码 是一个32位地址 用于屏蔽IP地址的一部分以区别网络号和主机号 并说明该IP地址是在局域网上 还是在远程网上 子网掩码不能单独存在 它必须结合IP地址一起使用 定义规则 子网掩码的设定
  • 机器学习数学基础(一):机器学习与数学分析

    机器学习数学基础 一 机器学习 概念 什么是机器学习 什么是学习 内涵与外延 流程 重点知识 Code 机器学习与数学分析 极限 导数 幂指函数 离散加和 连续积分 泰勒公式 应用 方向导数 梯度 特殊函数 函数 凸函数 一阶可微 二阶可微
  • 怎么复制Vmware虚拟机文件到其他的机器、别的硬盘目录

    Vmware虚拟机安装完之后有的时候需要挪动 备份虚拟机文件 比如 从公司电脑复制到家里电脑 或者将已安装好的虚拟机拷贝给同事使用 或者原来磁盘空间满了需要换一个磁盘等等 Vmware提供了相应的迁移和复制分发机制 避免了我们再次安装虚拟机
  • tensorRT模型性能测试

    目录 前言 1 模型训练 1 1 模型 1 2 数据集 1 3 xml2yolo 1 4 yolo2json 1 5 json2yolo 1 6 训练 2 TRT模型转换 2 1 YOLOv5 ONNX导出 2 2 YOLOv6 ONNX导
  • 榜样访谈——曾钰倬:从讲座中收获经验

    先做一个简单的自我介绍吧 大家好 我是来自湖南农业大学计算机科学与技术专业的曾钰倬 现任CSDN高校俱乐部主席 你在计算机学习方面遇到最大的问题是什么 曾钰倬 学习时缺乏概念联系 或者没有与已有知识联系 新知识难于纳入个人的认知结构 导致了
  • 【计算机毕业设计】237校园招聘系统

    一 系统截图 需要演示视频可以私聊 摘要 随着信息技术在管理上越来越深入而广泛的应用 实现基于SSM框架的校园招聘系统的设计与实现在技术上已成熟 本文介绍了基于SSM框架的校园招聘系统的设计与实现的开发全过程 通过分析企业对于基于SSM框架
  • unity编程实践-HitUFO改进

    作业要求 游戏有 n 个 round 每个 round 都包括10 次 trial 每个 trial 的飞碟的色彩 大小 发射位置 速度 角度 同时出现的个数都可能不同 它们由该 round 的 ruler 控制 每个 trial 的飞碟有
  • 0706--用replace来替换用例中的字段,如手机号码或ID

    第第第 第43个视频讲解 coding utf 8 Time 2021 6 23 11 37 AUTHOR 菜菜同学 SOFTWARE lemon1 1 在EXCEL的用例中 mark规则 值 使用这个来表示当前字段需要进行替换 2 在用例
  • CH340串口驱动(包含各系统平台)

    CH340转串口芯片支持的平台驱动齐全 支持 Windows Linux Android MacOS WinCE 等操作系统 各平台下驱动官网链接和说明如下 各平台的安装与使用问题可参见其他博文 Windows驱动 下载链接 CH340 C
  • Spring学习笔记:基于XML文件和注解两种配置方式实现spring框架的IOC和DI

    首先打开IntelliJ IDEA 创建一个Maven项目spring lesson 删除src文件夹 只保留maven依赖对应的pom文件 这个项目作为父工程 在pom文件中增加