6.dubbo常用的xml配置有哪些_【面试篇】必须掌握的Spring 常用注解

阅读文本大概需要5分钟。

注解本身没有功能的,就和 xml 一样。注解和 xml 都是一种元数据,元数据即解释数据的数据,这就是所谓配置。

本文主要罗列 Spring|Spring MVC相关注解的简介。

Spring部分

1、声明bean的注解

@Component 组件,没有明确的角色

@Service 在业务逻辑层使用(service层)

@Repository 在数据访问层使用(dao层)

@Controller 在展现层使用,控制器的声明(C)

2、注入bean的注解

@Autowired:由Spring提供

@Inject:由JSR-330提供

@Resource:由JSR-250提供

都可以注解在set方法和属性上,推荐注解在属性上(一目了然,少写代码)。

3、java配置类相关注解

@Configuration 声明当前类为配置类,相当于xml形式的Spring配置(类上)

@Bean 注解在方法上,声明当前方法的返回值为一个bean,替代xml中的方式(方法上)

@Configuration 声明当前类为配置类,其中内部组合了@Component注解,表明这个类是一个bean(类上)

@ComponentScan 用于对Component进行扫描,相当于xml中的(类上)

@WishlyConfiguration 为@Configuration与@ComponentScan的组合注解,可以替代这两个注解

4、切面(AOP)相关注解

Spring支持AspectJ的注解式切面编程。

@Aspect 声明一个切面(类上)
使用@After、@Before、@Around定义建言(advice),可直接将拦截规则(切点)作为参数。

@After 在方法执行之后执行(方法上)
@Before 在方法执行之前执行(方法上)
@Around 在方法执行之前与之后执行(方法上)

@PointCut 声明切点
在java配置类中使用@EnableAspectJAutoProxy注解开启Spring对AspectJ代理的支持(类上)

5、@Bean的属性支持

@Scope 设置Spring容器如何新建Bean实例(方法上,得有@Bean)
其设置类型包括:

Singleton (单例,一个Spring容器中只有一个bean实例,默认模式),
Protetype (每次调用新建一个bean),
Request (web项目中,给每个http request新建一个bean),
Session (web项目中,给每个http session新建一个bean),
GlobalSession(给每一个 global http session新建一个Bean实例)

@StepScope 在Spring Batch中还有涉及

@PostConstruct 由JSR-250提供,在构造函数执行完之后执行,等价于xml配置文件中bean的initMethod

@PreDestory 由JSR-250提供,在Bean销毁之前执行,等价于xml配置文件中bean的destroyMethod

6、@Value注解

@Value 为属性注入值(属性上)
支持如下方式的注入:
》注入普通字符

962a0303861c9ace39432d939093ae20.png

》注入操作系统属性

7698892ccca56b7bac4a5e6b5d357f1e.png

》注入表达式结果

febf0a94394fb804afff07da42cbe6ae.png

》注入其它bean属性

50e8bf8915949089eb95b5c85dc4b6dd.png

》注入文件资源

f1db82d37e640be7cb66eed637a514bb.png

》注入网站资源

c2c5b261c548b70d2590fa08888668ab.png

》注入配置文件

9960cb5052c23839c9dac9861a00d10a.png

注入配置使用方法:
① 编写配置文件(test.properties)

book.name=《三体》

② @PropertySource 加载配置文件(类上)

5064efacf7cd092e2eec7358b697b1d7.png

③ 还需配置一个PropertySourcesPlaceholderConfigurer的bean。

7、环境切换

@Profile 通过设定Environment的ActiveProfiles来设定当前context需要使用的配置环境。(类或方法上)

@Conditional Spring4中可以使用此注解定义条件话的bean,通过实现Condition接口,并重写matches方法,从而决定该bean是否被实例化。(方法上)

8、异步相关

@EnableAsync 配置类中,通过此注解开启对异步任务的支持,叙事性AsyncConfigurer接口(类上)

@Async 在实际执行的bean方法使用该注解来申明其是一个异步任务(方法上或类上所有的方法都将异步,需要@EnableAsync开启异步任务)

9、定时任务相关

@EnableScheduling 在配置类上使用,开启计划任务的支持(类上)

@Scheduled 来申明这是一个任务,包括cron,fixDelay,fixRate等类型(方法上,需先开启计划任务的支持)

10、@Enable*注解说明

这些注解主要用来开启对xxx的支持。
@EnableAspectJAutoProxy 开启对AspectJ自动代理的支持

@EnableAsync 开启异步方法的支持

@EnableScheduling 开启计划任务的支持

@EnableWebMvc 开启Web MVC的配置支持

@EnableConfigurationProperties 开启对@ConfigurationProperties注解配置Bean的支持

@EnableJpaRepositories 开启对SpringData JPA Repository的支持

@EnableTransactionManagement 开启注解式事务的支持

@EnableTransactionManagement 开启注解式事务的支持

@EnableCaching 开启注解式的缓存支持

11、测试相关注解

@RunWith 运行器,Spring中通常用于对JUnit的支持

db7a072463b02e8c719bc68b7e91bc4b.png

@ContextConfiguration 用来加载配置ApplicationContext,其中classes属性用来加载配置类

6d2c33a83bf80fd6572335b7d15d3240.png

SpringMVC部分

@EnableWebMvc 在配置类中开启Web MVC的配置支持,如一些ViewResolver或者MessageConverter等,若无此句,重写WebMvcConfigurerAdapter方法(用于对SpringMVC的配置)。

@Controller 声明该类为SpringMVC中的Controller

@RequestMapping 用于映射Web请求,包括访问路径和参数(类或方法上)

@ResponseBody 支持将返回值放在response内,而不是一个页面,通常用户返回json数据(返回值旁或方法上)

@RequestBody 允许request的参数在request体中,而不是在直接连接在地址后面。(放在参数前)

@PathVariable 用于接收路径参数,比如@RequestMapping(“/hello/{name}”)申明的路径,将注解放在参数中前,即可获取该值,通常作为Restful的接口实现方法。

@RestController 该注解为一个组合注解,相当于@Controller和@ResponseBody的组合,注解在类上,意味着,该Controller的所有方法都默认加上了@ResponseBody。

@ControllerAdvice 通过该注解,我们可以将对于控制器的全局配置放置在同一个位置,注解了@Controller的类的方法可使用@ExceptionHandler、@InitBinder、@ModelAttribute注解到方法上,
这对所有注解了 @RequestMapping的控制器内的方法有效。

@ExceptionHandler 用于全局处理控制器里的异常

@InitBinder 用来设置WebDataBinder,WebDataBinder用来自动绑定前台请求参数到Model中。

@ModelAttribute 本来的作用是绑定键值对到Model里,在@ControllerAdvice中是让全局的@RequestMapping都能获得在此处设置的键值对。

原文链接:

https://blog.csdn.net/yelvgou9995/article/details/83345267

往期精彩

01 漫谈发版哪些事,好课程推荐

02 Linux的常用最危险的命令

03 互联网支付系统整体架构详解

04 优秀的Java程序员必须了解的GC哪些

05 IT大企业有哪些病,别被这些病毁了自己?

关注我每天进步一点点

f9241ffb8d12fa139221d4b79e00976f.png

342c4389c7ebac0c1b4819774f5ef30b.png

你点的每个好看,我都认真当成了喜欢

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

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

相关文章

Linux的iptables常用配置范例(2)

iptables -F #清除所有规则 iptables -X #清除所有自定义规则 iptables -Z #各项计数归零 iptables -P INPUT DROP #将input链默认规则设置为丢弃 iptables -P OUTPUT DROP #将output链默认规则设置为丢弃 iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo …

aptitude 命令_C-命令行参数Aptitude问题与解答

aptitude 命令C programming Command Line Arguments Aptitude Questions and Answers: In this section you will find C Aptitude Questions and Answers on Command Line Arguments – Passing values with running programs, separate argument values, number of argument…

文件上传java逻辑_Java 文件上传 实例

import java.io.*;import java.util.*;import javax.servlet.*;import javax.servlet.http.*;public class Upload {private String saveDir "."; // 要保存文件的路径private String contentType ""; // 文档类型private String charset "";…

matlab数值计算pdf_Gnuplot科学绘图(九)——栅格以及方程数值解估算

Gnuplot科学绘图系列内容Gnuplot科学绘图(一)——从安装到简单函数绘图(文末有彩蛋)Gnuplot科学绘图(二)——坐标取值范围及刻度(文末有彩蛋)Gnuplot科学绘图(三)——点线风格Gnuplot科学绘图(四)——多组数据绘图Gnuplot科学绘图(五)——输出eps 图片Gnuplot科学绘图(六)——输…

dda算法_计算机图形学中的DDA(数字差分分析仪)算法

dda算法DDA(数字差分分析仪)算法 (DDA (Digital Differential Analyzer) Algorithm) In computer graphics, the DDA algorithm is the simplest algorithm among all other line generation algorithms. Here, the DDA is an abbreviation that stands for "Digital Diff…

购物商城框架java_基于jsp的购物商城-JavaEE实现购物商城 - java项目源码

基于jspservletpojomysql实现一个javaee/javaweb的购物商城, 该项目可用各类java课程设计大作业中, 购物商城的系统架构分为前后台两部分, 最终实现在线上进行购物商城各项功能,实现了诸如用户管理, 登录注册, 权限管理等功能, 并实现对各类购物商城相关的实体进行管理。该购物…

c语言++数组名【数字】_C ++程序在数组中打印所有非重复数字

c语言数组名【数字】Problem statement: Write a C program to print all the non-repeated numbers in an array in minimum time complexity. 问题陈述:编写一个C 程序, 以最小的时间复杂度将所有未重复的数字打印在数组中 。 Input Example: 输入示例…

java最接近对点及距离_最接近点对问题_分治法

一、问题描述给定平面上的n个点,找其中的一对点,使得在n个点组成的所有点对中该点对间的距离最小。二、解题思路及所选算法策略的可行性分析思路:利用分治法来解决问题。递归子结构求最接近点对总体可分为几个步骤:1、当问题规模小…

python return用法_初学Python要了解什么 装饰器知识汇总有哪些

初学Python要了解什么?装饰器知识汇总有哪些?在Python学习过程中,有多种方法对函数和类进行加工,相对于其它方式,装饰器语法简单,代码可读性高。因此,装饰器在Python项目中有广泛的应用&#xf…

android emulator虚拟设备分析第三篇之pipe上的qemud service

一、概述 本篇和第二篇是强相关的&#xff0c;需要结合第二篇一起看。 以boot-properties为例&#xff0c;注意不需要看ANDROID-QEMUD.TXT&#xff0c;这个是和guest os中的qemud进行相关的&#xff0c;已废弃。 启动emulator时&#xff0c;有一个参数-prop <key><val…

c#异常处理_C#异常处理能力问题和解答 套装4

c#异常处理1) Which is not a valid keyword used in the context of exception handling? trycatchfinalfinally Answer & Explanation Correct answer: 3final The final keyword is not used to handle exceptions in C#.NET. 1)在异常处理的上下文中使用哪个无效关键字…

Castor xsd生成java_java – Castor可以处理从基础XSD导入的多个XSD生成类吗?

注意&#xff1a;我是EclipseLink JAXB (MOXy)领导者,也是JAXB 2 (JSR-222)专家组的成员.Can Castor do this? If so, what would be the Ant task syntax for it.If not, would perhaps JAXB be a better alternative?下面是如何使用JAXB完成此操作的示例&#xff1a;产品xm…

串口通信 校验码_一文读懂S7-200 SMART自由口通信!

学习S7-200 SMART时了解到&#xff0c;基于RS485接口可实现一下几种通信&#xff1a;1&#xff09;modbus RTU通信2&#xff09;PPI协议通信3&#xff09;USS协议通信4&#xff09;自由口通信何为自由口通信呢&#xff1f;前三种通信必须要PLC和与其通信的设备支持相同的通信协…

hbase 学习(十三)集群间备份原理

集群建备份&#xff0c;它是master/slaves结构式的备份&#xff0c;由master推送&#xff0c;这样更容易跟踪现在备份到哪里了&#xff0c;况且region server是都有自己的WAL 和HLog日志&#xff0c;它就像mysql的主从备份结构一样&#xff0c;只有一个日志来跟踪。一个master集…

python expect模块_Python基础教程:用Python怎么telnet到网络设备

Python基础教程&#xff1a;用Python怎么telnet到网络设备0.前言Telnet协议属于TCP/IP协议族里的一种&#xff0c;对于我们这些网络攻城狮来说&#xff0c;再熟悉不过了&#xff0c;常用于远程登陆到网络设备进行操作&#xff0c;但是&#xff0c;它的缺陷太明显了&#xff0c;…

Java实现动态加载页面_[Java教程]动态加载页面数据的小工具 javascript + jQuery (持续更新)...

[Java教程]动态加载页面数据的小工具 javascript jQuery (持续更新)0 2014-05-07 18:00:06使用该控件&#xff0c;可以根据url&#xff0c;参数&#xff0c;加载html记录模板(包含json参数对应&#xff0c;以及具体记录位置Index根据参数描述加载对应的属性&#xff0c;并可以…

马哥linux第六周作业

1、复制/etc/rc.d/rc.sysinit文件至/tmp目录&#xff0c;将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#&#xff1b;[rootmageedu tmp]# cp /etc/rc.d/rc.sysinit . [rootmageedu tmp]# vim rc.sysinit :% s/^[[:space:]]/#&/ #按Esc进入vi…

Java ObjectInputStream enableResolveObject()方法与示例

ObjectInputStream类enableResolveObject()方法 (ObjectInputStream Class enableResolveObject() method) enableResolveObject() method is available in java.io package. enableResolveObject()方法在java.io包中可用。 enableResolveObject() method is used to enable th…

pygame render怎么显示中文_PyGame开发游戏(2D)02.基础图元

这节将介绍PyGame的基础架构。并学习如何在PyGame里绘制各种几何图形和显示加载图片。01.应用框架上一节的示例程序里&#xff0c;我们用到一个PyGame的应用程序框架。这是一个基础框架&#xff0c;利用它我们可以很轻松的添加各类图型绘制&#xff0c;键盘鼠标输入处理和各类逻…

word+增加水印+java_为Word2019文档添加水印的两种方法

水印的类型包括文字水印和图片水印两种。在Word文档中添加文字水印时&#xff0c;可以使用程序中预设的水印效果&#xff0c;而图片水印则需要自定义添加。一、使用程序预设的文字水印Word 2019中预设了机密、紧急、免责声明三种类型的文字水印&#xff0c;用户可根据文件的类型…