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

spring注解使用中常见的概念性问题

Spring注解使用中常见的概念性问题

  • @Configuration有什么用?
  • @Configuration和XML有什么区别?哪种好?
  • @Autowired 、 @Inject、@Resource 之间有什么区别?
  • @Value、@PropertySource 和 @Configuration?
  • Spring如何处理带@Configuration @Import的类?
  • @Profile有什么用?

@Configuration有什么用?

  1. @Configuration表明一个类中声明一个和多个@Bean标记的方法,并且这些方法被Spring容器管理用于生成Bean定义以及在运行时这些Bean的服务请求。
  2. 其实相当于原来的声明了多个bean的xml配置文件,而且被@Configuration也相当于一个组件。
  3. 加入@Configuration 注解,表明这就是一个配置类。有一个myBean()的方法并用@Bean 进行注释,返回一个MyBean()的实例,表明这个方法是需要被Spring进行管理的bean。@Bean 如果不指定名称的话,默认使用myBean名称,也就是小写的名称。
@Configuration
public class AppConfig {@Beanpublic MyBean myBean(){return new MyBean();}
}
  1. 可以通过使用 AnnotationConfigApplicationContext 来引导启动这个@Configuration 注解的类(在web项目中,也可以使用AnnotationContextWebApplicationContext或者其他变体来启动)
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
ctx.register(AppConfig.class);
ctx.refresh();
MyBean myBean = ctx.getBean(MyBean.class);
// use myBean ...
  1. 另外可以通过使用XML方式开启基于注解的启动,在/resources 目录下新建 application-context.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"xmlns:util="http://www.springframework.org/schema/util"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd"
><!-- 相当于基于注解的启动类 AnnotationConfigApplicationContext--><context:annotation-config /><bean class="com.linyf.demo.config.MyConfiguration"/>
</beans>

@Configuration和XML有什么区别?哪种好?

@Autowired 、 @Inject、@Resource 之间有什么区别?

  • @Inject: 这是jsr330 的规范,通过AutowiredAnnotationBeanPostProcessor 类实现的依赖注入。位于javax.inject包内,是Java自带的注解。
  • @Autowired: Spring提供的注解,通过AutowiredAnnotationBeanPostProcessor 类实现注入。位于org.springframework.beans.factory.annotation 包内。
  • @Resource: @Resource 是jsr250规范的实现,通过CommonAnnotationBeanPostProcessor 类实现注入。@Resource 一般会指定一个name属性

区别:
@Autowired和@Inject基本是一样的,因为两者都是使用AutowiredAnnotationBeanPostProcessor来处理依赖注入。但是@Resource是个例外,它使用的是CommonAnnotationBeanPostProcessor来处理依赖注入。当然,两者都是BeanPostProcessor。

@Value、@PropertySource 和 @Configuration?

  • @Configuration 可以和@Value 和@PropertySource 一起使用读取外部配置文件,

Spring如何处理带@Configuration @Import的类?

详情可以查看这篇文章:Spring/SpringBoot系列之SpringBoot 源码常用注解【九】

@Profile有什么用?

@Profile: 表示当一个或多个@Value 指定的配置文件处于可用状态时,组件符合注册条件,可以进行注册。

三种设置方式:

  1. 可以通过ConfigurableEnvironment.setActiveProfiles()以编程的方式激活

  2. 可以通过AbstractEnvironment.ACTIVE_PROFILES_PROPERTY_NAME (spring.profiles.active )属性设置为JVM属性

  3. 作为环境变量,或作为web.xml 应用程序的Servlet 上下文参数。也可以通过@ActiveProfiles 注解在集成测试中以声明方式激活配置文件。
    作用域:

  4. 作为类级别的注释在任意类或者直接与@Component 进行关联,包括@Configuration 类

  5. 作为原注解,可以自定义注解

  6. 作为方法的注解作用在任何方法
    注意:

如果一个配置类使用了Profile 标签或者@Profile
作用在任何类中都必须进行启用才会生效,如果@Profile({“p1”,“!p2”}) 标识两个属性,那么p1 是启用状态 而p2
是非启用状态的。
详见: https://blog.csdn.net/fei1234456/article/details/106905054/

相关文章:

spring注解使用中常见的概念性问题

Spring注解使用中常见的概念性问题Configuration有什么用&#xff1f;Configuration和XML有什么区别&#xff1f;哪种好&#xff1f;Autowired 、 Inject、Resource 之间有什么区别&#xff1f;Value、PropertySource 和 Configuration&#xff1f;Spring如何处理带Configurati…...

Module理解及使用

ES6的模块化设计思想是静态化&#xff0c;也就是说&#xff0c;在编译的时候确定模块的依赖关系&#xff0c;以及输出输出入的变量。而CommonJS和AMD模块都是在运行时确定的。ES6的模块不是对象&#xff0c;而是通过export显示指定输出的代码&#xff0c;再通过import命令输入。…...

ngix 常用配置之 location 匹配规则

大家好&#xff0c;我是 17。 今天和大家详细聊聊 nginx 的 location 匹配规则 location 匹配规则 匹配规则在后面的 try_files 中有举例 location 按如下优先级匹配 绝对匹配&#xff0c;一个字符也不能差^~ 前缀匹配~&#xff08;区分大小写&#xff09;&#xff0c; ~*(不…...

chatGPT与人形机器人,高泽龙接受中国经营报采访谈二者发展

1.相较于Chatgpt&#xff0c;人形机器人的市场前景有多大&#xff1f;答&#xff1a;人形机器人的市场前景可以用“无限大”来形容&#xff0c;这看起来很夸张而且并不合理&#xff0c;其实是客观而且中肯的。因为这个问题就仿佛是五十年前&#xff0c;人们问“未来的电脑市场有…...

进程同步——读者-写者问题

读者-写者问题 互斥制约与合作制约双重关系的进程同步问题描述是&#xff1a; 一个被多个进程共享的文件、记录或数据结构&#xff0c;允许进程对其执行读、写操作。读进程称为读者&#xff0c;写进程称为写者。其允许多个进程同时读取&#xff0c;但只要有一个进程在读&#…...

Android自动化配置

1 搭建APPIUM环境 1.1 安装node.js Appium是使用nodejs实现的&#xff0c;所以node是解释器&#xff0c;需要第一步安装好 node.js的安装包下载地址&#xff1a; https://nodejs.org/en/download/ 注意&#xff1a;node.js的安装包的下载在官网有两种版本&#xff0c;建议大…...

Java程序怎么运行?final、static用法小范围类型转大范围数据类型可以吗?

文章目录1.能将int强制转换为byte类型的变量吗&#xff1f;如果该值大于byte类型的范围&#xff0c;将会出现什么现象&#xff1f;2. Java程序是如何执行的&#xff1f;3.final 在 Java 中有什么作用&#xff1f;4.final有哪些用法?5.static都有哪些用法?1.能将int强制转换为…...

【数据管理】谈谈哈希原理和散列表

一、说明 提起哈希&#xff0c;有人要说&#xff1a;不就是一个稀疏表格么&#xff0c;谈的上什么原理&#xff1f;我说&#xff1a;非也&#xff0c;哈希是是那种看似无物&#xff0c;其实解决大问题的东西。如何提高数据管理效率&#xff1f;这是个问题&#xff0c;随着这个问…...

浙江工业大学关于2023年MBA考试初试成绩查询及复试阶段说明

根据往年的情况&#xff0c;2023浙江工业大学MBA考试初试成绩可能将于2月21日公布&#xff0c;为了广大考生可以及时查询到自己的分数&#xff0c;杭州达立易考教育为大家汇总了信息。 1、初试成绩查询&#xff1a;考生可登录中国研究生招生信息网“全国硕士研究生招生考…...

08:进阶篇 - CTK 插件元数据

作者: 一去、二三里 个人微信号: iwaleon 微信公众号: 高效程序员 元数据 元数据用于准确描述一个插件的特征,这样才能让 CTK Plugin Framework 适当地对 Plugin 进行各种处理(例如:依赖解析)。 CTK Plugin Framework 本身提供了一些清单头(元数据属性、条目),在 c…...

数据结构与算法之数组寻找峰值分而治之

这一篇分享一道在数组中寻找峰值的题目&#xff0c;使用到分而治之&#xff0c;二分查找等思想。本文章会讲解这个二分查找的本质&#xff0c;以及为什么要用二分查找&#xff0c;它能解决哪一类题目&#xff1f;目录&#xff1a;一.题目及其要求1.分而治之2.题目思路3.具体做法…...

Metasploit 使用篇

文章目录前言一、msfconsole启动msfconsole命令分类核心命令模块命令作业命令资源脚本命令后台数据库命令二、使用案例更改提示和提示字符运行shell命令信息收集&#xff1a;HTTP头检测前言 理解了Meatasploit框架架构、原理之后&#xff0c;自然就很好理解它的使用逻辑 find…...

Java岗面试题--Java并发(日积月累,每日三题)

目录面试题一&#xff1a;并行和并发有什么区别&#xff1f;面试题二&#xff1a;线程和进程的区别&#xff1f;追问&#xff1a;守护线程是什么&#xff1f;面试题三&#xff1a;创建线程的几种方式&#xff1f;1. 继承 Thread 类创建线程&#xff0c;重写 run() 方法2. 实现 …...

Prometheus监控案例之blackbox-exporter

blackbox-exporter简介 blackbox-exporter项目地址&#xff1a;https://github.com/prometheus/blackbox_exporter blackbox-exporter是Prometheus官方提供的一个黑盒监控解决方案&#xff0c;可以通过HTTP、HTTPS、DNS、ICMP、TCP和gRPC方式对目标实例进行检测。可用于以下使…...

Makefile基础使用和实战详解

Makefile基础使用和实战详解一、基础1.1、简单的Makefile1.2、多文件编译1.3、伪对象.PHONY二、变量2.1、自动变量2.2、特殊变量2.3、变量的类别2.4、变量及其值的来源2.5、变量引用的高级功能2.6、override 指令三、模式四、函数4.1、addprefix 函数4.2、filter函数4.3、filte…...

Go基础-变量

文章目录1 Go中的变量2 声明一个变量3 声明变量并初始化4 变量推断5 声明多个变量5.1 多个变量相同类型5.2 多个变量不同类型6 简短声明7 Go语言变量不能把一种类型赋值给其他类型1 Go中的变量 Go中变量指定了某存储单元的名称&#xff0c;该存储单元会存储特定类型的值&#…...

【算法】三道算法题目单词拆分,填充每个节点的下一个右侧节点指针以及组合总和

算法第一道算法题&#xff1a;单词拆分java解答参考第二道算法题&#xff1a;填充每个节点的下一个右侧节点指针java 解答参考第三道算法题&#xff1a;组合总和java解答参考大家好&#xff0c;我是小冷。 今天还是继续学习算法技术知识吧 第一道算法题&#xff1a;单词拆分 …...

【算法】刷题路线(系统+全面)

本系列基于当前各大公司对大公司的考察情况&#xff0c;给大家规划一条可行的算法刷题路线&#xff0c;大概会规划 200 道自认为有用的题&#xff0c;并且争取让初学者&#xff0c;能够刷起来更加丝滑&#xff0c;而且每个阶段都会进行相对应的说明。 当然&#xff0c;无论是面…...

Fiddler的报文分析

目录 1.Statistics请求性能数据 2.检测器&#xff08;Inspectors&#xff09; 3.自定义响应&#xff08;AutoResponder&#xff09; 1.Statistics请求性能数据 报文分析&#xff1a; Request Count: 1 请求数&#xff0c;该session总共发的请求数 Bytes …...

Spring 中,有两个 id 相同的 bean,会报错吗

我们知道&#xff0c;spring容器里面的bean默认是单例的&#xff0c;所以id是唯一的。但是需要注意&#xff0c;同一类型的bean可以有不同的id&#xff0c;比如有id1->bean&#xff0c;也可以有id2->bean。 下面再来详细回答一下文章的问题。 首先&#xff0c;在同一个…...

virtualbox 如何虚拟机ip固定

1、在网络管理里新建 2、配置网络 3、 进入linux系统&#xff0c;查看 查看 网卡是enp0s8, ifconfig 4、进入网卡配置文件 cd /etc/sysconfig/network-scripts如果没有enp0s8 &#xff0c;则使用mv ifcfg-enp0s3 ifcfg-enp0s8命令 配置项如下 TYPEEthernet PROXY_METHODn…...

Nginx+Tomcat负载均衡与动静分离架构

目录 简介 一、Tomcat基础部署与配置 1.1 Tomcat应用场景与特性 1.2 环境准备与安装 1.3 Tomcat主配置文件详解 1.4 部署Java Web站点 二、NginxTomcat负载均衡群集搭建 2.1 架构设计与原理 2.2 环境准备 2.3 Tomcat2配置&#xff08;与Tomcat1对称&#xff09; 2.4…...

css | class中 ‘.‘ 和 ‘:‘ 的使用 | 如,何时用 .is-selected{ ... } 何时用 :hover{...}?

省流总结&#xff1a;交互时的短暂视觉反馈 → 用 :hover&#xff0c;状态需要记录或切换 → 用类名如 .is-selected。 &#x1f9e0; 本质区别&#xff1a; 写法触发方式用途&.is-selected依赖 class 切换需要 JavaScript 控制状态&#xff0c;如选中、激活&:hover鼠…...

【判断自整除数】2022-4-6

缘由是判断自整除数的&#xff0c;这个我的结果是正确的&#xff0c;但是提交就有运行错误是怎么回事啊-编程语言-CSDN问答 void 自整除数字() {//所谓的自整除数字就是该数字可以整除其每一个位上的数字。 //对一个整数n,如果其各个位数的数字相加得到的数m能整除n,则称n为自…...

鸿蒙仓颉语言开发实战教程:商城应用个人中心页面

又到了高考的日子&#xff0c;幽蓝君在这里祝各位考生朋友冷静答题&#xff0c;超常发挥。 今天要分享的内容是仓颉语言商城应用的个人中心页面&#xff0c;先看效果图&#xff1a; 下面介绍下这个页面的实现过程。 我们可以先分析下整个页面的布局结构。可以看出它是纵向的布…...

阿里云 Linux 搭建邮件系统全流程及常见问题解决

阿里云 Linux 搭建 [conkl.com]邮件系统全流程及常见问题解决 目录 阿里云 Linux 搭建 [conkl.com]邮件系统全流程及常见问题解决一、前期准备&#xff08;关键配置需重点检查&#xff09;1.1 服务器与域名准备1.2 系统初始化&#xff08;必做操作&#xff09; 二、核心组件安装…...

《视觉SLAM十四讲》自用笔记 第三讲:三维空间刚体运动

第三讲 三维空间刚体运动 3.0 目标 1.理解三维空间的刚体运动描述方式&#xff1a;旋转矩阵、变换矩阵、四元数和欧拉角。 2.掌握 Eigen 库的矩阵、几何模块使用方法。 3.1 旋转矩阵 3.1.1 点和向量&#xff0c;坐标系 三维空间中&#xff0c;刚体的运动可以用两个概念来…...

人工智能:网络安全的“智能守护者”

在数字化时代&#xff0c;网络安全已经成为企业和个人面临的重大挑战。随着网络攻击的复杂性和频率不断增加&#xff0c;传统的安全防护手段已经难以应对。人工智能&#xff08;AI&#xff09;技术的出现为网络安全带来了新的希望和解决方案。本文将探讨人工智能在网络安全中的…...

[面试精选] 0094. 二叉树的中序遍历

文章目录 1. 题目链接2. 题目描述3. 题目示例4. 解题思路5. 题解代码6. 复杂度分析 1. 题目链接 94. 二叉树的中序遍历 - 力扣&#xff08;LeetCode&#xff09; 2. 题目描述 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 3. 题目示例 示例 1 : 输入&…...

96.如何使用C#实现串口发送? C#例子

Nuget包名称 System.IO.Ports 参考代码 using System; using System.IO.Ports; using System.Threading;namespace test {class Program{static void Main(){SerialPort port new SerialPort("COM1", 9600); // 配置串口port.Open();Timer timer new Timer((_) &…...