关于Springboot的一些注解的使用小结

SpringBoot条件注解:@ConditionalOnClass等注解的使用场景 对于频繁使用的条件组合,可以创建自定义的组合注解,提高代码的可读性和可维护性。/*** 自定义组合条件注解*//*** 使用自定义组合条件注解*/@Bean通过这种方式,可以将复杂的条件逻辑封装在一个注解中,使代码更加简洁清晰。SpringBoot的条件注解体系提供了强大而灵活的机制,使配置能够根据运行环境、依赖情况和配置属性等条件动态调整。@ConditionalOnClass等注解在自动配置和可插拔功能实现中发挥着重要作用,使得应用能够自适应地调整其行为和功能。 阅读详情

1. @ControllerAdvice可对controller中被 @RequestMapping注解的方法加一些逻辑处理,一般是配合@ExceptionHandler来全局捕获异常。

1) 假设我们有TestController: 

package com.bas.controller;

import com.bas.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
public class TestController {

    @Autowired
    private TestService testService;

    @RequestMapping(value = "/bas/test", method = RequestMethod.GET)
    public Boolean test(@RequestParam(value="param1",defaultValue = "value1")  String str1,
                              @RequestParam(value="param2",defaultValue = "value2")  String str2) {
        return testService.test(str1, str2);
    }
}

2) 因为错误的类型可以有很多种,这里我们使用Enum来枚举:

package com.bas.collection.common.enums;

public enum ExceptionMessageEnum {

    UNKNOWN_EXCEPTION(500,"未知错误");

    private final Integer code;
    private final String message;

    ExceptionMessageEnum(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    public Integer getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }
}

3) 然后是一个异常处理器:

package com.bas.exception;

import com.bas.common.enums.ExceptionMessageEnum;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;

@ControllerAdvice
public class GlobalExceptionHandler {

    private static final Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);

    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public String exceptionHandler(HttpServletRequest request, Exception e) {
        logger.info("\nurl:[{}],\n", request.getRequestURL());
        logger.error("an exception occurs ", e);
        return ExceptionMessageEnum.UNKNOWN_EXCEPTION.getMessage();
    }
}

更详细的例子也可以参考Spring的@ExceptionHandler和@ControllerAdvice统一处理异常。

2. @Profile

比如我这篇文章结合使用Springboot JMS 与 Amazon SQS 标准队列 写的JmsConfiguration。当我们启动项目的时候,这个JMS会自动启动监听器了,而这个JMS又依赖服务器上的特有权限 比如访问资源,那么当我们本地没有权限时执行unit-test的话就不能正常启动了。这个时候加上注解@Profile({"stg", "dev", "prod"}) 就可以很好地解决问题了,如图:

3. @Value

假设我们项目的properties里面配置的属性的值是以 , 分割。properties如下:

bas.tables=table1,table2,table3

 可以像下面这样注入:

@Value("#{'${bas.tables}'.split(',')}")
private List<String> tableNameList;

 

Silvaco Atlas新手入门:从安装到第一个半导体器件仿真(附DeckBuild配置) 本文为Silvaco Atlas新手提供了一份从软件安装、DeckBuild环境配置到完成第一个半导体器件仿真的实战指南。通过构建一个经典的PN结二极管案例,详细讲解了Atlas仿真语句的语法、核心命令顺序以及结果调试与可视化方法,帮助初学者快速上手并理解TCAD仿真流程。 阅读详情

相关推荐

Win11 C盘爆满别慌!手把手教你安全迁移AppData和用户文件夹(附一键脚本)

本文针对Win11 C盘空间不足问题,提供了一套安全有效的解决方案。通过深入解析用户目录结构,指导用户利用符号链接和Robocopy工具,将AppData、下载文档等占用大户迁移至其他分区,并附带了自动化脚本,从根本上实现C盘瘦身,同时确保系统稳定和数据安全。

weixin_29231221的博客 2091

spring 注解_Spring注解之@Profile

可以理解为我们在Spring容器中所定义的Bean的逻辑组名称,只有当这些Profile被激活的时候,才会将Profile中所对应的Bean注册到Spring容器中。举个更具体的例子,我们以前所定义的Bean,当Spring容器一启动的时候,就会一股脑的全部加载这些信息完成对Bean的创建;而使用了Profile之后,它会将Bean的定义进行更细粒度的划分,将这些定义的Bean划分为几个不同的组,...

weixin_39834149的博客 546

Parrot OS最新安装教程

Parrot OS和Kali Linux一样是一个基于 Debian 的免费开源 Linux 发行版,适合安全专家、开发人员、以及关心隐私的人。相较于Kali,Parrot OS属于轻量级,对于硬件的要求无需很高,目前版本已更新到6.3。通过按照本教程的方法,能够成功安装Parrot OS。

🦸💻冰草花生酱提醒您“请记得检查所有电子设备的最后登录时间哦⏰🔍” 4420

Spring Boot学习笔记

**一、**Spring Boot 入门 1、Spring Boot 简介 简化Spring应用开发的一个框架; 整个Spring技术栈的一个大整合; J2EE开发的一站式解决方案; 2、微服务 2014,martin fowler 微服务:架构风格(服务微化) 一个应用应该是一组小型服务;可以通过HTTP的方式进行互通; 单体应用:ALL IN ONE 微服务:每一个功能元素最终都是一个可独立替换和独立升级的软件单元; 详细参照微服务文档 3、环境准备 http://www.gulixueyuan.c

月云 的博客 705

python:numpy分享(保姆级教程)

创建数组:array和ndarray、rand()、randn()、arange()、randint()、uniform()astype()基础函数:ceil()、floor()、rint()、argmax()、argmin()、cumsum()、cumprod()numpy 是数据分析必不可少的第三方库,具有高性能的特点,多用于做数组分析。内置函数:ceil()、floor()、rint()主要用于数组计算,支持多维数组。array和ndarray。比较函数:all、any。去重函数:unique。

sulin123123的博客 1732

NSFC结题报告下载脚本失效?3步教你手动修复下载按钮问题(2024最新版)

针对NSFC官网域名变更导致结题报告下载脚本失效的问题,本文提供了详细的手动修复指南。通过三步操作,教你如何修改用户脚本的域名匹配规则,恢复下载按钮功能,确保NSFC结题报告下载器能继续高效工作。

vscode6remote的博客 753

spring @profile注解的使用

spring @profile注解的使用 本文主要介绍spring中@profile的使用方法以及在什么情况下使用。 本文主要参考: http://www.cnblogs.com/davidwang456/p/4429058.html 好,下面上货。 首先说一下为什么要使用这个@profile注解。@profile注解是spring提供的一个用来标明当前运行环

archer的技术故事 4万+

Linux-VMware安装后没有虚拟网卡VMnet1和VMnet8(亲测有效,一步一步跟着绝对成功)

VMware-安装后没有虚拟网卡VMnet1和VMnet8 就这个破东西我昨天弄了一天,网上什么VMware卸载重装,用CCleaner清理注册表什么的操作我全用了,但是昨天就是弄不好,同样的操作我昨天试了无数遍一直觉得可能是 持续更新中… 文章参考学习地址:https://blog.youkuaiyun.com/qq_42445139/article/details/87872130 ...

杨的博客 8852

SpringBoot注解小结

一、注解(annotations)列表 @SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让springBoot扫描到Configuration类并把它加入到程序上下文。 @Configuration 等同于spring的XML配置文件,俗称配...

S&Y_shhy_QQ_1127833416 360

educoder中Hive综合应用案例 — 用户搜索日志分析

Hive综合应用案例 — 用户搜索日志分析

weixin_46026136的博客 4796

Unity Shader之路(一)什么是Unity Shader?

Unity Shader前言什么是UnityShaderUnity Shader和材质的关系 前言 众所周知,要想当游戏开发工程师,Unity中的Shader编写不得不摸,这一系列文章我将描写我的Shader学习之路,致敬冯乐乐的书Unity Shader入门精要,此篇什么是Unity Shader?希望能给后人一点方向 我们刚开始接触Unity的时候,总是会遇到材质,但是不了解材质都是什么,为什么可以在很多材质中选择,为什么有时候选择了其他材质后就不能达到我们想要的结果,为什么资源商店有那么多的材质,山.

TurboQ珞珈 2240

SpringBoot 注解小结

最近通过做一些小项目来复习SpringBoot的相关知识,在这里顺便把SpringBoot中的注解做下记录,方便后续复习。

Zzz5270的博客 306

17、深入分析Freebase数据集:特征、挑战与类型系统构建

本文深入分析了Freebase数据集的特征、数据建模的挑战以及类型系统的构建方法。Freebase作为知识图谱的重要资源,以RDF三元组形式提供了丰富的结构化知识。文章重点探讨了反向三元组、中介节点(CVT节点)以及非主题三元组对链接预测任务的影响,并通过实验展示了不同类型处理策略对模型性能的作用。此外,文章详细介绍了如何构建一个显式的类型系统,以提升链接预测的准确性,并展望了未来可能的研究方向。

css33的专栏 290

Spring Boot常用注解小结

在Spring boot中,注解使用非常频繁,通过使用注解可以有效的提供开发效率,让项目代码看起来更简洁。 之前做过一个项目后台是使用Spring boot框架的,本篇文章将项目中高频使用的一些注解总结出来,并从不同层面角度来了解不同注解的作用以及使用例子 1、关于Controller层的一些注解。 @ResponseBody 注解 @RequestBody注解 @RequestM...

weixin_44098139的博客 258

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

SpringBoot常用注解小结

SpringBoot常用注解小结 @ResponseBody 封装返回信息,将java转换为json格式。 @ResponseMapping(value ="",method = RequestMethod.GET); @GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。 @PostMapping是一个组合注解,是@RequestMapping(method = RequestMethod.POST)的缩写。 @Reques

qq_38351136的博客 426

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Springboot常用注解小结

@Autowired自动装配注释,作为:实现自动装配,使用范围:用在成员变量、方法以及构造函数上。用在类属性上,可以免写setter方法优点:可以免除在配置文件中添加bean的注入信息,等价于上下文通过ByType的方式,在配置文件中查找相应的bean,并注入到该类中。&lt;!-- 该 BeanPostProcessor 将自动起作用,对标注@Autowired 的 Bean 进行自动注入 --...

dl348的博客 1799

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

springboot中得注解_Spring以及SpringBoot中的常用的注解小结

一、注解的基本概念Annotation(注解)就是Java提供了一种元程序中的元素关联任何信息和着任何元数据(metadata)的途径和方法。Annotion(注解)是一个接口,程序可以通过反射来获取指定程序元素的Annotion对象,然后通过Annotion对象来获取注解里面的元数据。二、常用注解2.1 依赖注入相关的@Repository 作用于数据访问层,向Ioc容器中注入组件;@Servi...

weixin_42363501的博客 219

SpringBoot的注解小结

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33743880的博客 97

SpringBoot开发常用注解小结

@Controller 表明一个注解的类是一个"Controller",也就是控制器,可以把它理解为MVC 模式的Controller 这个角色。这个注解是一个特殊的@Component,允许实现类通过类路径的扫描扫描到。它通常与@RequestMapping 注解一起使用 @Service 表明这个带注解的类是一个"Service",也就是服务层,可以把它理解为MVC 模式中的Service层这个角色,这个注解也是一个特殊的@Component,允许实现类通过类路径的扫描扫描到 @Reposito

qq_42570967的博客 242

SpringBoot项目小结

在application.properties中引入mybatis的配置信息基于REST风格的URL使用统一响应结果Result。

szm0225的博客 1051

SpringBoot - @ConditionalOnProperty注解使用详解

在开发基于SpringBoot框架的项目时,会用到下面的条件注解,有时会有需要控制配置类是否生效或注入到Spring上下文中的场景,可以使用@ConditionalOnProperty注解来控制@Configuration的注解是否生效。

记录并分享 8039

springboot常用注解总结

文章目录一、@SpringBootApplication二、@Service、@Controller、@Repository、@Component三、@ResponseBody、@RestController四、@AutoWired五、@RequestMapping、@GetMapping、@PostMapping六、@Configuration、@Bean七、@RequestParam、@RequestBody 一、@SpringBootApplication @SpringBootApplicatio

LXZ_1024的博客 1万+

Springboot系列:Springboot常用注解以及使用!

Springboot系列:Springboot常用注解以及使用! 前言 今天博主将为大家分享:Springboot系列:Springboot常用注解以及使用!不喜勿喷,如有异议欢迎讨论! 常规方式 注解 使用位置 作用 @Controller 类名上方 声明此类是一个SpringMVC Controller 对象 @RequestMapping 类或方法上 用在类上,表示所...

Mr_chen的博客 2283

SpringBoot缓存注解的使用

在springboot中使用缓存注解很简单,首先就只需要在依赖中引入spring-boot-starter-cache依赖,然后在application类中使用@EnableCaching注解开启缓存,然后在方法上根据需要使用具体的缓存注解即可。

江夏、的博客 5091

Springboot如何使用注解实现AOP

文章目录前言一、AOP是什么?二、代理模式1.什么是代理2.静态代理3.动态代理三,springboot中如何使用注解来实现aop1.自定义注解2.切面类总结 前言 在一些场景下,我们需要在执行某些方法或者某些代码时,预先执行或者后置执行特定的一些方法,但是我们不想在代码里复写,我们不想在代码里将这些指定的方法写入进去,而是通过抽离的方式,这种场景下aop切面可以帮助我们完成这种操作 提示:以下是本篇文章正文内容,下面案例可供参考 一、AOP是什么? spring两大核心包括ioc和aop,ioc..

qq_48329942的博客 8981

springboot注解

SpringBoot注解就是给代码打上标签的能力。通过引入注解,我们可以简单快速赋予代码生命力,大大提高代码可读性和扩展性。注解本身不具有任何能力,只是一个标签,但是我们可以定义各种标签然后实现各种标签处理器来对类、方法、属性甚至参数等进行功能扩展、功能开启、属性定义、行为定义、规则定义、关联处理、元数据定义等等。

yushuhoutinghua的博客 1461
上一篇: 关于应用程序中使用STS切换IAM角色
下一篇: 关于Springboot的@Service注入的方式
BAStriver
博客等级 码龄10年 3204粉丝 136原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值