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

spring基础使用(案例)

基于xml使用:

准备:

1.Dao层(接口):

public interface UserDao {public void save();
}

1.1 Dao层(实现类):

public class UserDaoIim  implements UserDao {@Overridepublic void save() {System.out.println("save");}
}

2.Service层(接口):

public interface UserService {public void save();
}

2.1 Service层(实现类):

public class UserServiceImp implements UserService {private UserDao userDao;@Overridepublic void save() {userDao.save();//调用dao层方法System.out.println("Service_save");}public UserDao getUserDao() {return userDao;}public void setUserDao(UserDao userDao) {this.userDao = userDao;}
}

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"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"><bean id="UserDao" class="UserDaoIim的全限定名"></bean><bean id="UserService" class="UserServiceImp的全限定名"><property name="userDao" ref="UserDao"></property>
<!--  name="userDao":UserServiceImp的属性   ref="UserDao":中指上面beanid指--></bean>
</beans>

测试使用:

public class MyTest {private UserDao userDao;private UserService userService;@Testpublic void springs(){
//        UserDao userDao = new UserDaoIim();
//        userDao.save();ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");//文件路径,我放在resources根下。
//        userDao = (UserDao) applicationContext.getBean("UserDao");//id名
//        userDao.save();userService = (UserService) applicationContext.getBean("UserService");//id名userService.save();}
}

三种方式获取bean对象:

        静态工厂模式获取:

静态工厂类(该类用到的实现类同上):

public class StaticFactory {public static UserDao getUserDao() {System.out.println("StaticFactory UserDao");return new UserDaoIim();}
}

xml关键配置:

<!-- 静态工厂获取bean。-->
<bean id="UserDao" class="com.dt.factory.StaticFactory" factory-method="getUserDao"></bean>

测试:

public class MyTest {private UserDao userDao;@Testpublic void springs(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
userDao = (UserDao) applicationContext.getBean("UserDao");
userDao.save();}
}

实例工厂模式获取:

        实例工厂类(该类用到的实现类同上):

public class InstanceFactory {public UserDao getUserDao() {System.out.println("Instance UserDao");return new UserDaoIim();}
}

xml关键配置:

<!--        实例工厂获取实例-->
<bean id="instanceFactory" class="com.dt.factory.InstanceFactory"></bean>
<bean id="UserDao" factory-bean="instanceFactory" factory-method="getUserDao"></bean>

测试:

public class MyTest {private UserDao userDao;@Testpublic void springs(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
userDao = (UserDao) applicationContext.getBean("UserDao");
userDao.save();}
}

自定义工厂获取bean:

    工厂类:

public class MyFactoryBean implements FactoryBean {public Object getObject() throws Exception {System.out.println("FactoryBean getObject");return new UserDaoIim();}public Class<?> getObjectType() {return null;}
}

xml关键配置:

 <!--FactoryBean 获取实例-->
<bean id="UserDao" class="com.dt.factory.MyFactoryBean"></bean>

测试:

public class MyTest {private UserDao userDao;@Testpublic void springs(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
userDao = (UserDao) applicationContext.getBean("UserDao");
userDao.save();}
}
​

赋值(引用类型用ref,基本数据类型用value):

     实现类(赋值给userDao和number)(该类其他代码不变):

private UserDao userDao;
private Integer number;public Integer getNumber() {return number;}public void setNumber(Integer number) {this.number = number;}@Overridepublic void save() {userDao.save();System.out.println("Service_save");System.out.println(number);}

           xml关键配置:

<bean id="UserDao" class="com.dt.dao.imp.UserDaoIim"></bean><bean id="UserServiceImp" class="com.dt.service.imp.UserServiceImp">
<property name="userDao" ref="UserDao"></property><property name="number" value="10"></property></bean>

测试:

public class MyTest {private UserService userService;@Testpublic void springs(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
userService = (UserService) applicationContext.getBean("UserServiceImp");
userService.save();}
}

        实现类(该类其他代码不变):

 public UserServiceImp() {}public UserServiceImp(UserDao userDao, Integer number) {this.userDao = userDao;this.number = number;}

        xml关键配置:

    <bean id="UserDao" class="com.dt.dao.imp.UserDaoIim"></bean>
<bean id="UserServiceImp" class="com.dt.service.imp.UserServiceImp"><constructor-arg name="userDao" ref="UserDao"></constructor-arg><constructor-arg name="number" value="20"></constructor-arg></bean>

        测试:

public class MyTest {private UserDao userDao;private UserService userService;@Testpublic void springs(){ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
userService = (UserService) applicationContext.getBean("UserServiceImp");
userService.save();}
}

自动装配(实现类和测试类不变):

        xml关键配置:

<bean id="UserDao"  class="com.dt.dao.imp.UserDaoIim"></bean>
<bean id="UserServiceImp" class="com.dt.service.imp.UserServiceImp" autowire="byType"></bean>

集合赋值

        接口:

public interface Resource { }

        实现类:

public class ResourceImp implements Resource {private String[] array;private List<String> list;private Set<String> set;private Map<String,String> map;public String[] getArray() {return array;}public void setArray(String[] array) {this.array = array;}public List<String> getList() {return list;}public void setList(List<String> list) {this.list = list;}public Set<String> getSet() {return set;}public void setSet(Set<String> set) {this.set = set;}public Map<String, String> getMap() {return map;}public void setMap(Map<String, String> map) {this.map = map;}@Overridepublic String toString() {return "ResourceImp{" +"array=" + Arrays.toString(array) +", list=" + list +", set=" + set +", map=" + map +'}';}
}

        xml关键配置:

 <bean id="UserDao"  class="com.dt.dao.imp.UserDaoIim"></bean>
<!--集合赋值--><bean id="ResourceImp"  class="com.dt.service.imp.ResourceImp"><property name="array"><array><value>sing</value><value>dance</value><value>rap</value></array></property><property name="list"><list><value>list1</value><value>list2</value><value>list3</value></list></property><property name="set"><set><value>set1</value><value>set2</value><value>set3</value></set></property><property name="map"><map><entry key="key1" value="value1"></entry><entry key="key2" value="value2"></entry><entry key="key3" value="value3"></entry></map></property></bean>

        测试(其他不变):

public class MyTest {@Test
public void springs(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
Resource resourceImp = (Resource) applicationContext.getBean("ResourceImp");
System.out.println(resourceImp);}
}

第三方管理(关键配置):

<bean id="名字" class="......"><property name="..." value="..."></property><property name="..." value="..."></property>
</bean>

相关文章:

spring基础使用(案例)

基于xml使用&#xff1a; 准备&#xff1a; 1.Dao层&#xff08;接口&#xff09;&#xff1a; public interface UserDao {public void save(); } 1.1 Dao层&#xff08;实现类&#xff09;&#xff1a; public class UserDaoIim implements UserDao {Overridepublic vo…...

相同的树LeetCode

100. 相同的树 - 力扣&#xff08;LeetCode100. 相同的树 - 力扣&#xff08; 给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 /*** Definition…...

Vue中如何抽取部分代码到单独的ts文件

Vue中如何抽取部分代码到单独的ts文件 本文代码基于 简单示例 这段代码&#xff0c;是比较通用的代码&#xff0c;我想抽取成一个ts文件&#xff0c;来供其他地方调用。 const groupData reactive({groupList:[] as Array<GroupV2Response>,current:{} as GroupV2Re…...

山东齐鲁文化名人颜廷利:朱郭有文才,曲高‘菏’寡星光路

山东齐鲁文化名人颜廷利教授表示&#xff0c;朱郭&#xff08;谐音‘祖国’&#xff09;有文才&#xff0c;《曲高‘菏’寡》星光路… 山东菏泽歌手朱之文在2011年凭借一首《滚滚长江东逝水》一夜成名&#xff0c; 十多年之后的今天&#xff0c;菏泽市网络红人郭有才靠一首《诺…...

嵌入式学习70-复习(wireshark使用和http协议)

知识零碎&#xff1a; ssize_t 头文件&#xff1a;<sys/types.h> 有符号整型 --------------------------------------------------------------------------------------------------------------------------------- wireshark 1.sudo wireshark 2.选择 any &…...

idea配置MySQL提示

点击sql语句&#xff0c;然后再选择show context actions 然后再选择Inject language or reference 然后再选择MySQL 然后我们会发现sql语句变颜色了 如果表是红色 那么需要我们连接mysql的对于的数据库...

如何利用AI生成答辩PPT?笔灵AI答辩PPT,智能识别关键点

很多快要毕业的同学在做答辩PPT的时候总是感觉毫无思路&#xff0c;一窍不通。但这并不是你们的错&#xff0c;对于平时没接触过相关方面&#xff0c;第一次搞答辩PPT的人来说&#xff0c;这是很正常的一件事。一个好的答辩PPT可以根据以下分为以下几部分来写。 1.研究的背景和…...

速盾:怎么设置cdn加速小程序图片?

小程序是一种基于微信平台的应用程序&#xff0c;为了提升小程序的用户体验&#xff0c;我们可以通过设置CDN&#xff08;内容分发网络&#xff09;来加速小程序中的图片加载速度。CDN是一种分布式服务&#xff0c;它将原始服务器的存储内容复制到在全球各地的缓存服务器&#…...

Android bootchart 分析启动性能工具使用

bootchart简介 bootchart 可为整个系统提供所有进程的 CPU 和 I/O 负载细分。该工具不需要重建系统映像&#xff0c;可以用作进入 systrace 之前的快速健全性检查。 1. 板端配置&#xff1a; 在Android 板端启用 bootchart&#xff0c;请运行以下命令&#xff1a; 2. Bootch…...

一键开启,盲盒小程序里的梦幻奇遇

在这个充满惊喜与未知的数字时代&#xff0c;盲盒小程序以其独特的魅力成为了许多人的新宠。只需一键开启&#xff0c;你就能踏入一个充满梦幻奇遇的世界&#xff0c;探索未知的惊喜与乐趣。 盲盒小程序不仅仅是一个简单的购物平台&#xff0c;它更是一个充满神秘与惊喜的宝藏库…...

如何进行并行执行的诊断与调优 —— 《OceanBase 并行执行》系列 6

在诊断并行执行问题时&#xff0c;我们可以从两个主要方面展开分析。首先&#xff0c;从整体系统层面进行考量&#xff0c;比如检查网络是否畅通、磁盘IO是否过载、CPU资源是否已用满&#xff1b;其次&#xff0c;针对具体的SQL语句进行深入剖析&#xff0c;定位问题SQL&#x…...

【Ubuntu系统hgfs共享文件夹不显示问题解决】

问题描述&#xff1a;为了实现本地物理机与虚拟机之间的文件传输&#xff0c;我们通常采用共享文件夹的方式。但是在Vmware虚拟机使用Ubuntu系统的过程中&#xff0c;由于某种特殊或意外原因&#xff0c;Ubuntu系统或发生/mnt/hgfs共享文件夹丢失不显示的问题。以下是本次问题发…...

C++的相关知识集

1、C概述 1 两大编程思想 c语言在c语言的基础上添加了面向对象编程和泛型编程的支持。c继承了c语言高效&#xff0c;简洁&#xff0c;快速和可移植的传统。 2 起源 与c语言一样&#xff0c;c也是在贝尔实验室诞生的&#xff0c;Bjarne Stroustrup(本贾尼斯特劳斯特卢普)在2…...

解决Jmeter报错 :Error generating the report: java.lang.NullPointerException

当我们在使用命令行的方式来执行jmeter 脚本的时候&#xff0c;例如 ./jmeter -n -t /opt/jmeter/script/test.jmx -Juser50 -Jtime100 -l /opt/jmeter/script/restult2.jtl 上面脚本的含义解释如下&#xff1a; -n -t 通过命令行的方式执行脚本test.jmx -Juser50 并发用户…...

QT外部库:zlib

前言 新建项目&#xff1a;pro文件中新增代码 LIBS -lz 在main.cpp函数中#include "zlib.h",如果此时运行代码提示没有找到对应的函数&#xff0c;那么就qt安装目录&#xff1a;D:\C\qt5.12.7\Tools\mingw730_64\x86_64-w64-mingw32\include&#xff08;这里是博主…...

钡铼技术BL205模块分布式IO集成应用风电场状态监测

在风力发电这一绿色能源领域&#xff0c;高效、精确的状态监测对于提升风电场运维效率、保障设备安全运行至关重要。随着工业4.0和数字化转型浪潮的推进&#xff0c;传统的监测方式已难以满足日益增长的数据处理与分析需求。钡铼技术BL205模块的出现&#xff0c;为风电场状态监…...

java博客目录

博客目录 基础知识 集合列表 List ArrayList&#xff1a; LinkedList&#xff1a; Set Map TreeMap 设计模式 单例模式&#xff1a; 工厂方法...

从零开始学习Linux(8)----自定义shell

shell从用户读入字符串“ls”&#xff0c;shell建立一个新的进程&#xff0c;然后在那个进程中运行ls程序并等待那个进程结束。然后shell读取新的一行输入&#xff0c;建立一个新的进程&#xff0c;在这个进程中运行程序&#xff0c;并等待这个进程结束。所以要写一个shell&…...

《大数据分析-数据仓库项目实战》学习笔记

目录 基本概念 数据仓库 数据仓库整体技术架构 数据仓库主题 数据集市 数据仓库的血缘关系 数据仓库元数据管理 数据仓库的指标 数据仓库维度概念 HDFS Flume Hadoop Kafka 数据仓库分层模型 Superset 即席查询 Sqoop Atlas元数据管理 项目需求描述 系统目标…...

JDK介绍

JDK是Java Development Kit的缩写&#xff0c;是Oracle公司提供的用于开发Java应用程序的开发包。它包括了Java运行环境&#xff08;Java Runtime Environment&#xff09;&#xff0c;以及一系列Java工具&#xff08;如javac、java、jdb等&#xff09;和Java基础类库&#xff…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...