首页 > 其他分享 >spring注解开发---beans注入

spring注解开发---beans注入

时间:2023-10-06 10:56:13浏览次数:35  
标签:匹配 name Autowired spring byName --- beans 注解 Qualifier

万能xml开头:

<!--导入p,c命名空间 context注解 -->
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:c="http://www.springframework.org/schema/c"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       https://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       https://www.springframework.org/schema/context/spring-context.xsd">
    <context:annotation-config/> <!--必须使用这个标签,才能使用注解-->

原先使用beans.xml的方法

    <bean name="cat" class="zhe.xin.pojo.Cat"/>
    <bean name="dog" class="zhe.xin.pojo.Dog"/>
    <bean name="person" class="zhe.xin.pojo.Person">
        <property name="dog" ref="dog"/>
        <property name="cat" ref="cat"/>
        <property name="name" value="小哲"/>
    </bean>

使用注解后:

只需要这样注册xml:

 <bean name="cat" class="zhe.xin.pojo.Cat"/>
 <bean name="dog" class="zhe.xin.pojo.Dog"/>
 <bean name="person" class="zhe.xin.pojo.Person"/>

在person类里:

public class Person {
    @Autowired
    Dog dog;
    @Autowired
    Cat cat;
    String name;
//...get
}

等同于:

1 <bean name="person" class="zhe.xin.pojo.Person" autowire="byName"/>

ps:自动寻找beans里的name等于类里的变量名的标签

使用了 @Autowired 注释后,

  1. 不需要在xml里配置: <property/>
  2. 类里不需要写set方法
  3. @Autowired只能匹配byName

假如beans里的没有名字相匹配:

    <bean name="dog1" class="zhe.xin.pojo.Dog"/>

则java代码要加入

    @Qualifier("dog2")
    @Autowired
    Dog dog;

总结: @Autowired 可以自动自动装配,但是默认用byName匹配, 如果没有匹配的name就要加入 @Qualifier("name")进行匹配类

 


下面有个简单的方法:

使用 :@Resource注解

 在注释中可以看到这是Java提供的方法

他可以弥补 @Autowired 的不足, 一个@Resource可以代替@Autowired 和@Qualifier("name")两个注解

他首先匹配byName 若没有在匹配byType


学习到的内容:

@Autowired 可以自动自动装配,但是默认用byName匹配
@Qualifier("name") 如果@Autowired没有匹配的name,就要加入此注释进行匹配类
@Resource注解:首先匹配byName 若没有在匹配byType,一个@Resource可以代替@Autowired 和@Qualifier("name")两个注解

 

2023-10-06  10:44:27

 

 

 

标签:匹配,name,Autowired,spring,byName,---,beans,注解,Qualifier
From: https://www.cnblogs.com/zhexin/p/17744325.html

相关文章

  • vulnhub_phpmyadmin_CVE-2016-5734漏洞复现
    漏洞复现练习漏洞简介phpMyAdmin是一套开源的、基于Web的MySQL数据库管理工具。在其查找并替换字符串功能中,将用户输入的信息拼接进preg_replace函数第一个参数中。在PHP5.4.7以前,preg_replace的第一个参数可以利用\0进行截断,并将正则模式修改为e。众所周知,e模式的正则支持......
  • Springboot整合Redis
    一、Redis简介简单来说Redis就是一个使用C语言开发的数据库,不过与传统数据库不同的是Redis的数据是存在内存中的,也就是它是内存数据库,所以读写速度非常快,因此Redis被广泛应用于缓存方向。另外,Redis除了做缓存之外,Redis也经常用来做分布式锁,甚至是消息队列。Redis......
  • 38-8
    给定两个链表,编写算法找出两个链表的公共结点#include<stdio.h>#include<stdlib.h>typedefstructnode{intdata;structnode*next;}LNode,*LinkList;voidTailCreate(LinkList&L){L=(LinkList)malloc(sizeof(LNode));L->next=NULL;LNo......
  • 408真题---疑难杂症
    大部分的疑难杂症我都直接记在了真题试卷上,这篇博客主要是记录不好记在真题试卷上的疑难杂症一、编制单位的确定问题来源:2010年真题-T43按1字节编址:说明一个编址单元是一字节,我们可以这样编址:0x00400000(地址)E8(机器码/数据)0x00400001 C50x004......
  • Spring中Bean的六大行为模式
    一、singleton:单例模式(默认)singleton是Bean在Spring中默认的行为,这个默认的行为模式就是说一个类只有一个Bean对象,所有的用户都使用的同一个对象,如果有一个用户对这个对象进行了修改,那么所有的结果都会发生改变。如:这样一个User类:packagecom.demo.spring.beans;publi......
  • Spring Mvc框架环境搭建
    1.创建动态WEB项目本次在IDEA2021.2.1版本中创建SpringMV 出现webapp文件夹则说明文件创建好啦!2.配置TomCat配置完之后,让我们来运行一下! 配置成功了!!!配置Spring前端控制器<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="<http://maven.apache.org/......
  • CSS 基础 5 - CSS 选择器
    基础#id{}ID选择器.class{}类选择器tag{}标签选择器,tag可以是h1,p,div,span,img,nav,footer...*{}通用选择器,选择所有元素,可以和其他复杂选择器组合<divclass="class1class2"id="my-id"></div>注:每个元素可以有多个类,例如上面的HTML,在CSS中......
  • 认识Spring MVC
    认识SpringMV   工作流程图解析 前端控制器前端控制器是SpringMVC的核心,负责接受Http请求并协调各个组件请求工作。<!DOCTYPEweb-appPUBLIC"-//SunMicrosystems,Inc.//DTDWebApplication2.3//EN""<http://java.sun.com/dtd/web-app_2_3.dtd>"><web-......
  • docker-compose deploy 高可用 elasticsearch TLS
    文章目录1.sysctl2.swap3.hosts4.配置instances.yaml5.创建证书6.部署7.修改kibanna密码8.清理1.sysctl[root@githubes_tls]#cat/etc/sysctl.conf#sysctlsettingsaredefinedthroughfilesin#/usr/lib/sysctl.d/,/run/sysctl.d/,and/etc/sysctl.d/.##......
  • 基于Java+SpringBoot+Vue的微信小程序实现民族节日及民间故事推广系统
    一、前言......