关于Spring的bean的相关注解以及其简单使用方法

news2024/11/22 14:45:11

一、前置工作

第一步:创建一个maven项目

第二步:在resource中创建一个名字叫做spring-config.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:content="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">
//com.java.demo改成你自己的包名字
    <content:component-scan base-package="com.java.demo"></content:component-scan>
</beans>

第三步:创建com.java.com这个包,及其相应的内容,列如我创建一个学生类

二、五大注解的简析

五大注解,分别是

controller

Service 

Resopsitory

Component

Configuration

简单来说,他们就是作为一个标识,每一个都表示不同的意思

 

但我们只是使用的话,他们的效果是近乎一样的

我们都只需要在类前面加上响应的注解,然后在主函数利用ApplicationContext获取注解,并调用对应方法,就可以打印

 

 

 三、主方法

public class App {
    public static void main(String[] args) {
//一定要写自己的xml名字
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
//利用反射获取对象
        Student student = context.getBean("student", Student.class);
//调用对象方法
        student.sayHi();
    }
}

四、如何使用bean

我们根据上面三个步骤,已经可以使用五大注解的方式来简单的的获取和调用对象了,现在我们需要对对象的内容进行注入,并获取注入了属性之后的对象

属性注入:

@Component//要使用bean必须加上五大注解之一
public class Student {
    @Autowired//使用Autowired进行属性注入
    private Student s1;
    private int id;
    private String name;
    private int score;

    @Override//这个是方便检查结果
    public String toString() {
        return "Student{" +
                "s1=" + s1 +
                ", id=" + id +
                ", name='" + name + '\'' +
                ", score=" + score +
                '}';
    }
//伪代码,进行属性注入
    public Student func(){
        Student student = new Student();
        student.name = "张三";
        student.id = 10;
        student.score = 100;
        return student;
    }

}

setter注入

@Component//必须配合五大注解使用
public class Student {
    private Student s1;

    private int id;
    private String name;
    private int score;

    @Override
    public String toString() {
        return "Student{" +
                "s1=" + s1 +
                ", id=" + id +
                ", name='" + name + '\'' +
                ", score=" + score +
                '}';
    }
//这里使用Autowired,是因为我这个伪代码中有set这个赋值操作
//所以setter注入就是要在set方法加上注解
    @Autowired
    public Student func(){
        Student student = new Student();
        student.name = "张三";
        student.id = 10;
        student.score = 100;
        return student;
    }

}

 

 构造方法注入

构造注入是指,在构造调用者实例的同时,完成被调用者的实例化。即使用构造器设置依赖关系。
Spring调用类的有参数构造方法,创建对象同时给属性赋值

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

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

相关文章

java+springboot+mysql员工宿舍管理系统

项目介绍&#xff1a; 使用javaspringbootmysql开发的员工宿舍管理系统&#xff0c;系统包含超级管理员、管理员、员工角色&#xff0c;功能如下&#xff1a; 超级管理员&#xff1a;管理员管理&#xff1b;楼栋管理&#xff1b;宿舍管理&#xff1b;员工管理&#xff08;分配…

IntelliJ IDEA 2023.2 正式发布,彻底弃用Struts2,不再支持Win7

点击“终码一生”&#xff0c;关注&#xff0c;置顶公众号 每日技术干货&#xff0c;第一时间送达&#xff01; 1、主要更新 IntelliJ IDEA 2023.2已经到来&#xff01;此版本为IDE带来了大量令人兴奋的功能和有价值的改进。下面是本次的主要更新&#xff1a; IntelliJ IDEA 2…

【Java】智慧校园家校互通小程序源码

智慧校园家校互通小程序源码包含电子班牌系统考勤功能&#xff0c;以云服务器为基础&#xff0c;实现大数据和资源共享。是一款全功能智慧校园管理平台系统&#xff0c;融合了多媒体信息发布、家校互通、物联控制、教务管理、日常办公等一系列应用&#xff0c;是校园管理的现代…

如何在Linux系统上安装cpolar内网穿透

文章目录 如何在Linux系统上安装cpolar内网穿透 如何在Linux系统上安装cpolar内网穿透 cpolar作为一款体积小巧却功能强大的内网穿透软件&#xff0c;不仅能够在多种环境和应用场景中发挥巨大作用&#xff0c;还能适应多种操作系统&#xff0c;应用最为广泛的Windows、Mac OS系…

软件外包开发的流程图工具

软件开发过程中需要画流程图&#xff0c;可以更清楚的表达软件业务流程&#xff0c;减少在开发过程中的业务理解偏差&#xff0c;因此在软件开发过程中流程图工具是必不可少的软件管理工具。今天和大家分享常见的一些软件流程图工具&#xff0c;每款工具都有其自身的特色&#…

NAT网络地址转换(红茶三杯CCNA)

私有IPv4地址空间 10.0.0.0-10.255.255.255 172.16.0.0-172.31.255.255 192.168.0.0-192.168.255.255 问题&#x1f4a1;&#xff1f; 问问题NAT实验

el-table数据处理

在写表格时遇到&#xff0c;后端返回的数据是对象&#xff0c;并且缺少字段 1.每一条数据加上 一个字段 2.将对象转成数组 以下是数据 {"groupA": {"groupName": null,"orgName": null,"orgId": null,"allPeoper": &quo…

【实践篇】推荐算法PaaS化探索与实践 | 京东云技术团队

作者&#xff1a;京东零售 崔宁 1. 背景说明 目前&#xff0c;推荐算法部支持了主站、企业业务、全渠道等20业务线的900推荐场景&#xff0c;通过梳理大促运营、各垂直业务线推荐场景的共性需求&#xff0c;对现有推荐算法能力进行沉淀和积累&#xff0c;并通过算法PaaS化打造…

建木-自动化部署工具-安装文档

阿丹&#xff1a; 在管理微服务在开发环境以及线上环境的时候。发现每次都要手动的去进行更新迭代。但是在项目的管理中使用建木就可以很简单流程化的进行管理项目。 建木官网如下&#xff1a; 建木 下载docker-compose.yml wget https://gitee.com/jianmu-dev/jianmu-deplo…

力扣算法数学类—剑指 Offer 43. 1~n 整数中 1 出现的次数

目录 剑指 Offer 43. 1&#xff5e;n 整数中 1 出现的次数 题解&#xff1a; 代码&#xff1a; 结果&#xff1a; 输入一个整数 n &#xff0c;求1&#xff5e;n这n个整数的十进制表示中1出现的次数。 例如&#xff0c;输入12&#xff0c;1&#xff5e;12这些整数中包含1 的…

【C++杂货铺】模板(文末有彩蛋哟)

文章目录 一、泛型编程二、函数模板2.1 函数模板的原理2.2 函数模板的实例化2.3 模板参数的匹配原则 三、类模板四、非类型模板参数五、模板的特化5.1 函数模板特化5.2 类模板特化 六、模板分离编译七、模板总结好书推荐&#x1f381;彩蛋 一、泛型编程 &#x1f4d6;实现一个…

JDK17的下载安装与配置(详细教程)

1.搜索JDK的官方网址 https://www.oracle.com/java/technologies/downloads/#jdk17 2.切换到window系统&#xff0c;根据自己电脑的系统进行切换。然后点击下载 3.下载完成后移动你指定的文件夹并解压(这里放在了d盘目录下) 4.配置环境变量。打开我的电脑->点击属->找到…

「分享」Word文档被锁定无法编辑怎么办?4种方法解决

有没有遇到这种情况&#xff1f;打开Word文档后&#xff0c;发现文档被锁定了&#xff0c;无法输入内容&#xff0c;也无法修改&#xff0c;这很大可能是Word文档被设置了“限制编辑”。 如果Word文档被设置了“限制编辑”&#xff0c;而我们又需要编辑文档&#xff0c;可以用…

Python简要复习

西电Python程序设计复习 Python基础知识 python的特点 兼具编译型和解释型特性&#xff0c;兼顾过程式、函数式和面向对象编程范式的通用编程语言 解释型语言无需像编译型需要一次性的编译成机器码&#xff0c;然后运行&#xff0c;而是由名叫解释器的程序动态的将源代码逐…

Docker部署出现的问题

记录第一次使用Docker今天需要使用DockerFile文件在x86环境下部署镜像&#xff0c;给了我下面四个文件&#xff0c;让我生成首行的文件。 直接创建镜像报错 执行创造镜像命令 docker build -t wondersoft/ubuntu_scan_engine:latest .报错信息 报错原因&#xff1a; FROM …

数制系统——二、十、十六进制的相互转换

目录 1 二进制数制系统 1.1 二进制和 IPv4 地址 1.2 二进制位置记法 1.3 将二进制数转换为十进制数 1.4 十进制到二进制的转换 1.4.1 二进制和十进制互相转换游戏链接 1.5 Pv4 地址 2 十六进制数制系统 2.1 十六进制和 IPv6 地址 2.2 十进制到十六进制的转换 2.3 十…

【linux 结束pts/1踢人踢除另一个终端】

centos7上误执行了个命令&#xff0c;导致一直刷屏&#xff0c;强制CTRLC无法正常退出&#xff0c;一直出现如下&#xff1a; 网上搜索通过ctrlD&#xff0c;q均无法正常退出&#xff0c; 不想强行关掉&#xff0c;通过&#xff1a;who命令查看均用户&#xff1a; who mshns…

RocketMQ 行业分享

5.0的架构发生了重大调整&#xff0c;添加了一层rocketmq-proxy,可以通过grpc的方式接入。 参考 https://juejin.cn/post/7199413150973984827

plt绘制渐变颜色填充折线、曲线图

问题: 一般我们在绘制一些曲线或者折线图的时候需要进行颜色填充。例如 import matplotlib.pyplot as plt import numpy as npdata = np.loadtxt("0.txt").T x = data[0] y = data[1]fig, axs = plt.subplots(figsize=(4, 3)) axs.plot(x, y)# 设置xy轴范围 plt.x…

提升设计效率,深入解析CAD中的辅助命令

在CAD设计中&#xff0c;辅助命令是提高效率和精度的重要工具。无论是初学者还是有经验的设计师&#xff0c;掌握正确使用CAD中的辅助命令对于优化设计流程至关重要。本文将为你介绍一些常用的辅助命令&#xff0c;并分享如何正确运用它们来提升CAD设计的质量和效率。 正交函数…