001 spring ioc(xml)

文章目录

    • UserController
    • UserMapperImpl
    • School.java
    • Student.java
    • UserServiceImpl.java
    • ApplicationContext.xml
    • UserControllerTest.java
    • StudentTest.java
    • pom.xml

UserController


package com.aistart.controller;import com.aistart.pojo.Student;
import com.aistart.service.UserService;
import com.aistart.service.impl.UserServiceImpl;public class UserController {/*依赖抽象*/UserService userService;public void setUserService(UserService userService) {this.userService = userService;}public String Login(Student student){boolean login = userService.login(student);if (login)return "yes";else return "no";}}

UserMapperImpl


package com.aistart.mapper.impl;import com.aistart.mapper.UserMapper;
import com.aistart.pojo.Student;public class UserMapperImpl implements UserMapper {@Overridepublic int selectUser(Student student) {System.out.println("这里是查找是否有用户的mapper");return 0;}
}

School.java


package com.aistart.pojo;public class School {private String schoolName;public School(String schoolName) {this.schoolName = schoolName;}public School() {System.out.println("school的无参被调用了");}public String getSchoolName() {return schoolName;}public void setSchoolName(String schoolName) {this.schoolName = schoolName;}@Overridepublic String toString() {final StringBuilder sb = new StringBuilder("School{");sb.append("schoolName='").append(schoolName).append('\'');sb.append('}');return sb.toString();}
}

Student.java


package com.aistart.pojo;public class Student {private String stuName;private Integer age;private School school;public School getSchool() {return school;}public void setSchool(School school) {this.school = school;}public Student() {System.out.println("student无参被调用了");}public Student(String stuName, Integer age) {this.stuName = stuName;this.age = age;}public String getStuName() {return stuName;}public void setStuName(String stuName) {this.stuName = stuName;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {final StringBuilder sb = new StringBuilder("Student{");sb.append("stuName='").append(stuName).append('\'');sb.append(", age=").append(age);sb.append(", school=").append(school);sb.append('}');return sb.toString();}
}

UserServiceImpl.java


package com.aistart.service.impl;import com.aistart.mapper.UserMapper;
import com.aistart.mapper.impl.UserMapperImpl;
import com.aistart.pojo.Student;
import com.aistart.service.UserService;public class UserServiceImpl implements UserService {UserMapper userMapper;public void setUserMapper(UserMapper userMapper) {this.userMapper = userMapper;}@Overridepublic boolean login(Student student) {//        具体事先System.out.println("这是login的service业务");/*判断各种*/int i = userMapper.selectUser(student);if (i==1){return true;}return false;}
}

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"><!--第二步,创建元数据--><!--id就相当于这个对象的唯一标识,理解为这对象在容器中的"变量名"--><!--bean中,调用默认的构造方法,去创建--><bean id="alice" class="com.aistart.pojo.Student"><property name="stuName" value="Alice"/><!--标签中,相当于键值对,name:value--><!--name等同于属性名--><!--value等同于注入的值注意,不管加入什么类型都是""引起来的--><property name="age" value="19"/><!--这个标签,其实是执行了set方法去注入的--><!--一定要有set方法--><!--name   搭配value和refvalue是简单类型,字面量能够赋值的ref是引入类型,是外部获取得另一个对象--><property name="school" ref="ksdx"/><!-- 这个bean的合作者和配置在这里 --></bean><bean id="sqxy" class="com.aistart.pojo.School"><!-- 这个bean的合作者和配置在这里 --><property name="schoolName" value="小清华"></property></bean><bean id="ksdx" class="com.aistart.pojo.School"><!-- 这个bean的合作者和配置在这里 --><property name="schoolName" value="呼呼睡觉"></property></bean><!-- 更多bean 定义在这里 --><bean id="userController" class="com.aistart.controller.UserController"><property name="userService" ref="userService"></property></bean><bean id="userService" class="com.aistart.service.impl.UserServiceImpl"><property name="userMapper" ref="userMapper"></property></bean><bean id="userMapper" class="com.aistart.mapper.impl.UserMapperImpl"/></beans>

UserControllerTest.java

package com.aistart.controller;import com.aistart.pojo.Student;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import static org.junit.Assert.*;public class UserControllerTest {@Testpublic void login() {/*利用spring容器获取controller对象*/ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");UserController userController = (UserController) context.getBean("userController");String login = userController.Login(new Student());System.out.println(login);}
}

StudentTest.java


package com.aistart.pojo;import org.junit.Test;
import org.springframework.beans.BeanUtils;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.support.ClassPathXmlApplicationContext;import static org.junit.Assert.*;public class StudentTest {@Testpublic void test(){/*传统的注入方式*//*1.构造器注入*/Student alice = new Student("Alice", 18);/*2.用set方法注入*/Student student = new Student();student.setStuName("Bob");student.setAge(19);}/*使用spring来创建对象*/@Testpublic void beanTest(){/*第三步,实例化一个容器*//*无参被调用说明:容器不单单是加载xml,并且根据xml去创建对象,全都创建了*//*创建的同时应该将值注入其中*/ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");/*第四步,获取实例对象** 参数:是xml中对象实例的id* 返回:类型都是Object* */Student alice =(Student) context.getBean("alice");Student alice1 =(Student) context.getBean("alice");/*在spring容器中,对象实例默认都是单例的*/System.out.println(alice1==alice);System.out.println(alice);}
}

pom.xml


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.aistart</groupId><artifactId>Spring_demo</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!--第一步,导入环境--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.30</version></dependency></dependencies></project>

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

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

相关文章

智慧公厕中的大数据、云计算和物联网技术引领未来公厕管理革命

现代社会对于公共卫生和环境保护的要求越来越高&#xff0c;智慧公厕作为城市基础设施建设的重要组成部分&#xff0c;正引领着公厕管理的革命。随着科技的不断进步&#xff0c;大数据、云计算和物联网技术的应用为智慧公厕带来了全新的可能性&#xff0c;&#xff08;ZonTree中…

Spring Boot统一功能处理之拦截器

本篇主要介绍Spring Boot的统一功能处理中的拦截器。 目录 一、拦截器的基本使用 二、拦截器实操 三、浅尝源码 初始化DispatcherServerlet 处理请求&#xff08;doDispatch) 四、适配器模式 一、拦截器的基本使用 在一般的学校或者社区门口&#xff0c;通常会安排几个…

selenium添加代理(有账号密码)

以下为各种尝试的记录&#xff0c;正确实现可直接参考最后一条&#xff01; 1&#xff0c;导入Proxy库来添加capabilities属性&#xff1a;可以访问网站&#xff0c;但ip还是本机ip from selenium import webdriver from selenium.webdriver.chrome.options import Options f…

【mT5多语言翻译】之四——加载:加载数据集与模型

请参考本系列目录&#xff1a;【mT5多语言翻译】之一——实战项目总览 [1] 加载数据集 在上一篇实战博客中&#xff0c;我们介绍了如何下载和预处理数据集&#xff0c;并且介绍了如何将数据集内的文本进行分词然后保存为pt文件。 接下来&#xff0c;我们讲解在模型训练时加载数…

【TensorRT】TensorRT C# API 项目更新 (1):支持动态Bath输入模型推理(下篇)

4. 接口应用 关于该项目的调用方式在上一篇文章中已经进行了详细介绍&#xff0c;具体使用可以参考《最新发布&#xff01;TensorRT C# API &#xff1a;基于C#与TensorRT部署深度学习模型》&#xff0c;下面结合Yolov8-cls模型详细介绍一下更新的接口使用方法。 4.1 创建并配…

Java零基础入门-Java反射机制

一、概述 我们都听说过java有个反射机制&#xff0c;通过反射机制我们可以更深入的控制程序的运行过程。例如&#xff0c;在程序进入到运行期间&#xff0c;由用户输入一个类名&#xff0c;然后我们可以动态获取到该类拥有的所有类结构、属性名和方法&#xff0c;甚至还可以任意…

sift 解释

转载 https://www.cnblogs.com/xc90/articles/11571995.html opensift code Rob Hess robwhess/opensift: Open-Source SIFT Library (github.com) 在构建图像尺度空间的过程中&#xff0c;唯一使用的核函数是高斯核&#xff0c;这一点被T Lindeber在文献《Scale-space th…

Java快速入门系列-9(Spring框架与Spring Boot —— 深度探索及实践指南)

第九章:Spring框架与Spring Boot —— 深度探索及实践指南 9.1 Spring框架概述9.2 Spring IoC容器9.3 Spring AOP9.4 Spring MVC9.5 Spring Data JPA/Hibernate9.6 Spring Boot快速入门与核心特性9.7 Spring Boot的自动配置与启动流程详解9.8 创建RESTful服务与数据库交互实践…

专为苹果系统设计的精美可视化图表 | 开源日报 No.219

danielgindi/Charts Stars: 27.3k License: Apache-2.0 Charts 是为 iOS/tvOS/OSX 提供美观图表的开源项目&#xff0c;是跨平台 MPAndroidChart 在苹果设备上的实现。该项目提供了以下主要功能和优势&#xff1a; 支持 iOS、tvOS 和 macOS 平台使用 Swift 编写&#xff0c;可…

Ceph学习 -6.Nautilus版本集群部署

文章目录 1.集群部署1.1 环境概述1.1.1 基础知识1.1.2 环境规划1.1.3 小结 1.2 准备工作1.2.1 基本环境1.2.2 软件安装1.2.3 小结 1.3 Ceph部署1.3.1 集群创建1.3.2 部署Mon1.3.3 小结 1.4 Ceph部署21.4.1 Mon认证1.4.2 Mgr环境1.4.3 小结 1.5 OSD环境1.5.1 基本环境1.5.2 OSD实…

数据结构-移除元素(简单)

题目描述 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出…

可视化大屏的应用(11):智慧运维领域的得力助手

一、什么是智慧运维 智慧运维&#xff08;Smart Operations and Maintenance&#xff0c;简称智慧运维&#xff09;是一种利用先进的信息技术和数据分析手段&#xff0c;对设备、设施或系统进行监测、分析和优化管理的运维方式。它通过实时监测数据、智能分析和预测&#xff0…

wpf viewmodel和界面双向通知

通知模型&#xff08;Model&#xff09;或视图模型&#xff08;ViewModel&#xff09; 这两个有什么区别?分别给我代码例子 在MVVM&#xff08;Model-View-ViewModel&#xff09;架构中&#xff0c;Model和ViewModel扮演不同的角色&#xff1a; Model表示应用程序的数据域&am…

Redis中的集群(五)

集群 在集群中执行命令 MOVED错误。 当节点发现键所在的槽并非由自己负责处理的时候&#xff0c;节点就会向客户端返回一个MOVED错误&#xff0c;指引客户端转向至正在负责槽的节点&#xff0c;MOVED错误的格式为: MOVED <slot> <ip>:<port>其中slot为键…

centos 7.9 nginx本地化安装,把镜像改成阿里云

1.把centos7.9系统切换到阿里云的镜像源 1.1.先备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup1.2.下载新的CentOS-Base.repo配置文件 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo特别…

盲人独立出行的新里程:“盲人软件”赋能无障碍生活

作为一名资深记者&#xff0c;我始终致力于探索并分享那些以科技之力提升特殊群体生活质量的故事。最近&#xff0c;一款名为蝙蝠避障的盲人软件进入了我的视野&#xff0c;其强大的避障导航功能正悄然改变着视障人士的出行方式&#xff0c;赋予他们前所未有的独立生活能力。 …

【多线程】线程池Future和FutureTask

【多线程】线程池Future和FutureTask 【一】Future概述【1】Future的出现原因【2】Future结构图 【二】Future详解【1】Future接口源码【2】Future的5个方法【3】ThreadPoolExecutor提供了三个方法&#xff0c;来获取返回值&#xff08;1&#xff09;submit(Runnable r)&#x…

利用数组储存表格数据

原理以及普通数组储存表格信息 在介绍数组的时候说过&#xff0c;数组能够用来储存任何同类型的数据&#xff0c;这里的意思就表明只要是同一个类型的数组据就可以储存到一个数组中。那么在表格中同一行的数据是否可以储存到同一个数组中呢&#xff1f;答案自然是可以&#xff…

【ARM 裸机】汇编 led 驱动之原理分析

1、我们为什么要学习汇编&#xff1f;&#xff1f;&#xff1f; 之前我们或许接触过 STM32 以及其他的 32 位的 MCU ,都是基于 C 语言环境进行编程的&#xff0c;都没怎么注意汇编&#xff0c;是因为 ST 公司早已将启动文件写好了&#xff0c;新建一个 STM32 工程的时候&#…

回归预测 | Matlab实现SSA-GRNN麻雀算法优化广义回归神经网络多变量回归预测(含优化前后预测可视化)

回归预测 | Matlab实现SSA-GRNN麻雀算法优化广义回归神经网络多变量回归预测(含优化前后预测可视化) 目录 回归预测 | Matlab实现SSA-GRNN麻雀算法优化广义回归神经网络多变量回归预测(含优化前后预测可视化)预测效果基本介绍程序设计参考资料预测效果