002 spring

文章目录

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

UserController.java


package com.aistart.controller;import com.aistart.pojo.Student;
import com.aistart.service.UserService;
import com.aistart.service.impl.UserServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;@Controller
public class UserController {/*依赖抽象*/@Autowired/*它的逻辑并不是根据名字去找,而是根据同源累类型去找** 如果找到了两个一摸一样的同源类型???--->找名字* */@Qualifier("userServiceImpl")//功能是,让自动装配的寻找逻辑改为根据名字去查找//别忘了,要与Autowired连用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.java

package com.aistart.mapper.impl;import com.aistart.mapper.UserMapper;
import com.aistart.pojo.Student;
import org.springframework.stereotype.Repository;@Repository
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;import org.springframework.stereotype.Component;/*如何将一个类注册到容器*//** 有哪些注解*** */
@Component
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) {System.out.println("全参数构造");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();}
}

User1ServiceImpl.java


package com.aistart.service.impl;import com.aistart.mapper.UserMapper;
import com.aistart.pojo.Student;
import com.aistart.service.UserService;
import org.springframework.stereotype.Service;import javax.annotation.Resource;@Service
public class User1ServiceImpl implements UserService {@ResourceUserMapper 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;}
}

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;
import org.springframework.stereotype.Service;import javax.annotation.Resource;@Service
/*起别名*/
public class UserServiceImpl implements UserService {@ResourceUserMapper 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;}
}

AnnotationContext.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/beanshttps://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsd"><!--只有被注册的包下面的注解才能生效--><context:component-scan base-package="com.aistart"></context:component-scan><context:annotation-config/></beans>

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"><!--默认调用参数位置去进行赋值--><constructor-arg index="0" value="Candy"/><constructor-arg index="1" value="19"/><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><!--对应的注解就是@AutoWrite(用它多) @Resouce()--></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"/><bean id="newOne" class="com.aistart.pojo.Student" scope="prototype">
<!--        <constructor-arg index="0" value="下名利"/>-->
<!--        <constructor-arg index="1" value="10"/>--><!--调用有参构造方法Student(string stuName,int age){...}--><!--这里面的name值,其实是传参的参数名--><constructor-arg name="age" value="19"></constructor-arg><constructor-arg name="stuName" value="candy"></constructor-arg>
<!--        <constructor-arg name="school" ref=""--></bean></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("AnnotationContext.xml");UserController userController = (UserController) context.getBean("userController");String login = userController.Login(new Student("小米",1));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("小谬",1);student.setStuName("Bob");student.setAge(19);}/*使用spring来创建对象*/@Testpublic void beanTest(){/*第三步,实例化一个容器*//*无参被调用说明:容器不单单是加载xml,并且根据xml去创建对象,全都创建了*//*创建的同时应该将值注入其中*/ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");/*第四步,获取实例对象** 参数:是xml中对象实例的id* 返回:类型都是Object* */Student new1 =(Student) context.getBean("newOne");Student new2 =(Student) context.getBean("newOne");Student alice1 =(Student) context.getBean("alice");/*在spring容器中,对象实例默认都是单例的*/System.out.println(new1==new2);}@Testpublic void annoTest(){ApplicationContext context = new ClassPathXmlApplicationContext("AnnotationContext.xml");//        Object user = context.getBean("user");}
}

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/799198.shtml

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

相关文章

leetcode605-Can Place Flowers

题目&#xff1a; 假设有一个很长的花坛&#xff0c;一部分地块种植了花&#xff0c;另一部分却没有。可是&#xff0c;花不能种植在相邻的地块上&#xff0c;它们会争夺水源&#xff0c;两者都会死去。 给你一个整数数组 flowerbed 表示花坛&#xff0c;由若干 0 和 1 组成&a…

mysqldump: Got error: 1049: Unknown database ‘root‘ when selecting the datab

1.问题描述 MySQL版本号&#xff1a;MySQL Server 8.3MySQL持久化到处数据库结构及数据 mysqldump: Got error: 1049: Unknown database root when selecting the datab2.问题解决 cmd 切换本地路径 cd /d D:\Program Files\MySQL\MySQL Server 8.3\bin执行数据库备份命令 …

Linux命令-dpkg-divert命令(Debian Linux中创建并管理一个转向列表)

说明 dpkg-divert命令 是Debian Linux中创建并管理一个转向&#xff08;diversion&#xff09;列表&#xff0c;其使得安装文件的默认位置失效的工具。 语法 dpkg-divert(选项)(参数)选项 --add&#xff1a;添加一个转移文件&#xff1b; --remove&#xff1a;删除一个转移…

Java智慧校园系统源码 微信小程序+电子班牌

Java智慧校园系统源码 微信小程序电子班牌 通过设备管理对百纳智慧校园的智慧班牌以及百纳智慧屏&#xff08;校牌&#xff09;进行统一集中式管理&#xff0c;支持浏览所有设备的基本信息以及在离线状态&#xff0c;支持添加设备、设备一键开关机、一键重启、设置节假日开关机…

Java单链表和LinkedList的实现

一、单链表的实现 无头单向非循环链表 定义异常用于判断所给位置是否合法 public class IndexNotLegal extends RuntimeException{public IndexNotLegal(){}public IndexNotLegal(String smg){super(smg);} } class ListNode中包含当前节点的值和下一个节点指向 实现链表的…

nginx支持的多种负载均衡策略

目录 1.轮询&#xff08;默认&#xff09; 2. ip_hash 3. 加权轮询&#xff08;weight&#xff09; 4. fair&#xff08;第三方&#xff09; 5. 最少连接&#xff08;least_conn&#xff09; 1.轮询&#xff08;默认&#xff09; 将请求依次分配给每个服务器&#xff0c;确…

自定义OPPO-r9s的kernel内核,并开启安卓支持docker

0. 版本说明 本文提供了OPPO手机r9s的内核编译方法&#xff0c;并开机支持docker。用的是开源lineage14.1的rom。 我这边基于开源lineage14.1&#xff0c;打了一个docker内核编译镜像(17380582683/r9s)&#xff0c;大家可以在容器里&#xff0c;手动打出完整的rom包zip文件。…

SpringCloud Alibaba Sentinel 实现熔断功能

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅&#xff0c;从传统的模块之间调用&#xff0c;一步步的升级为 SpringCloud 模块之间的调用&#xff0c;此篇文章为第十六篇&#xff0c;即使用 Sentinel 实现熔断功能。 二、 Ribbon 系列 首先我们新建两个服务的提供者…

vue3 keep-alive include失效问题

在使用vue3 keep-alive时&#xff0c;发现并没有起作用, 代码如下&#xff1a; <template><div class"app-main"><router-view v-slot"{ Component }"><keep-alive :include"cachedViews && cachedViews.map((x:any) &…

[StartingPoint][Tier1]Pennyworth

Important Jenkins是一个用于自动化构建、测试和部署软件项目的开源持续集成和持续部署&#xff08;CI/CD&#xff09;工具。它允许开发团队自动执行和监控在软件开发过程中的重复性任务&#xff0c;例如构建代码、运行测试、部署应用程序等。Jenkins提供了一个易于使用的Web界…

python使用selenium模拟人工操作

概述 有时候业务中的一些固定流程的测试环境需要重复执行很多次&#xff1b;这种场景其实可以用python的selenium库模拟用户手动点击输入&#xff0c;实现自动化测试&#xff1b; 我这边的python版本是 Python 3.6.7rc2 demo # codingutf-8 import time import logging imp…

Debian 安装 python 3.9.6

安装相关依赖 sudo apt update sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev curl libbz2-dev 下载Python 源码 wget https://mirrors.aliyun.com/python-release/source/Py…

基于R语言BIOMOD2模型的物种分布模拟

随着生物多样性全球大会的举办&#xff0c;不论是管理机构及科研单位、高校都在积极准备&#xff0c;根据国家林草局最新工作指示&#xff0c;我国将积极整合、优化自然保护地&#xff0c;加快推进国家公园体制试点&#xff0c;构建以国家公园为主体的自然保护地体系。针对我国…

Spring 如何优雅的灵活的Http重试

1、背景说明 在互联网时代&#xff0c; 不同系统之间大多数是通过http调用&#xff0c;调用过程中会超时、异常等过种问题。为了保证业务稳定&#xff0c;http 重试是常用方案。下面列举几种方案。 2、Http重试方案介绍 2.1 传统方案 1、使用传统的递归调用&#xff0c;实现方…

SQL 注入之 Windows/Docker 环境 SQLi-labs 靶场搭建!

在安全测试领域&#xff0c;SQL注入是一种常见的攻击方式&#xff0c;通过应用程序的输入执行恶意SQL查询&#xff0c;从而绕过认证和授权&#xff0c;可以窃取、篡改或破坏数据库中的数据。作为安全测试学习者&#xff0c;如果你要练习SQL注入&#xff0c;在未授权情况下直接去…

深入浅出 -- 系统架构之负载均衡Nginx实现高可用

一、Nginx的高可用 线上如果采用单个节点的方式部署Nginx&#xff0c;难免会出现天灾人祸&#xff0c;比如系统异常、程序宕机、服务器断电、机房爆炸、地球毁灭....哈哈哈&#xff0c;夸张了。但实际生产环境中确实存在隐患问题&#xff0c;由于Nginx作为整个系统的网关层接入…

安卓手机APP开发的音频和视频概述

安卓手机APP开发的音频和视频概述 目录 概述 Jetpack Media3 回放组件 Media3 MediaSession MediaSessionService MediaController MeidaBrowser Media3 Exoplayer 编辑组件 Media3 Transformer Effects EditedMediaItem UI组件 Media3 UI Jetpack MediaRouter…

anylabeling使用和安装

源码地址&#xff1a; git clone https://github.com/vietanhdev/anylabeling.git Auto Labeling with Segment Anything Youtube Demo: https://www.youtube.com/watch?v5qVJiYNX5KkDocumentation: https://anylabeling.nrl.ai Features: Image annotation for polygon, r…

利用Leaflet + React:构建WEBGIS

React是 Facebook 开发的一个开源库&#xff0c;用于构建用户界面。就其本身而言&#xff0c;Leaflet是一个用于将地图发布到网络的JavaScript 库。这两个工具的组合很简单&#xff0c;允许您创建动态网络地图。在本文中&#xff0c;我们将看到这种组合的一些特征以及一些简单的…

查找题(二分解法c++)

文章目录 【深基13.例1】查找题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示代码如下&#xff1a; 【深基13.例1】查找 题目描述 输入 n n n 个不超过 1 0 9 10^9 109 的单调不减的&#xff08;就是后面的数字不小于前面的数字&#xff09;非负整数 a 1 , a…