首页 > 其他分享 >spring - mvc -2

spring - mvc -2

时间:2024-03-09 11:45:32浏览次数:23  
标签:name spring Required ExceptionHandler mvc Spring 注解 异常

spring mvc

1.@Required注解的作用是什么

@Required注解用在 setter 方法上,它表明具有该注解的 bean 属性必须在配置时填充。否则,Spring容器将抛出BeanInitializationException异常。
此外,@Required与@Autowired不同——因为它仅限于setter,而@Autowired则不然。@Autowired也可用于连接构造函数和字段,而@Required仅检查属性是否已设置。
让我们看一个例子:

public class Person {
    private String name;
 
    @Required
    public void setName(String name) {
        this.name = name;
    }
}

现在,需要在 XML 配置中设置Person bean的名称,如下所示:

<bean id="person" class="com.baeldung.Person">
    <property name="name" value="Joe" />
</bean>

请注意,默认情况下,@Required不适用于基于 Java 的@Configuration类。如果您需要确保所有属性均已设置,则可以在使用@Bean注解的方法创建 bean 时执行此操作。

2.Spring 中的@Controller、@Component、@Repository和@Service注解有什么区别

根据 Spring 官方文档,@Component是任何 Spring 管理的组件的通用构造型。@Repository、@Service和@Controller是@Component的专门化,用于更具体的用例,例如,分别在持久层、服务层和表示层中。
让我们看一下后三个的具体用例:
@Controller – 表示该类充当控制器的角色,并检测类内的@RequestMapping注解
@Service –表示该类保存业务逻辑并调用存储库层的方法
@ Repository——表示该类定义了一个数据存储库;它的工作是捕获特定于平台的异常并将它们作为 Spring 统一的未经检查的异常之一重新抛出

3.@ExceptionHandler注解有什么 作用

@ExceptionHandler注释允许我们定义一个处理异常的方法。我们可以独立使用该注释,但与@ControllerAdvice一起使用是更好的选择 。这样,我们就可以建立一个全局的错误处理机制。这样,我们就不需要在每个控制器中都编写异常处理的代码了。

@ControllerAdvice
public class RestResponseEntityExceptionHandler
  extends ResponseEntityExceptionHandler {

    @ExceptionHandler(value = { IllegalArgumentException.class,
      IllegalStateException.class })
    protected ResponseEntity<Object> handleConflict(RuntimeException ex,
      WebRequest request) {
        String bodyOfResponse = "This should be application specific";
        return handleExceptionInternal(ex, bodyOfResponse, new HttpHeaders(),
          HttpStatus.CONFLICT, request);
    }
}

我们还应该注意,这将为 所有抛出 IllegalArgumentException或 IllegalStateException 的控制器提供@ExceptionHandler方法。使用@ExceptionHandler声明的异常应该与用作方法参数的异常匹配。否则,异常解决机制将在运行时失败。
这里要记住的一件事是,可以 为同一个异常定义多个@ExceptionHandler 。但我们不能在同一个类中执行此操作,因为 Spring 会抛出异常并在启动时失败。
另一方面,如果我们在两个单独的类中定义它们,应用程序将启动,但它将使用它找到的第一个处理程序,可能是错误的。

标签:name,spring,Required,ExceptionHandler,mvc,Spring,注解,异常
From: https://www.cnblogs.com/dkpp/p/18062447

相关文章

  • spring - mvc - @Valid
    自定义验证创建自定义验证器需要推出我们自己的注释并在我们的模型中使用它来强制执行验证规则。因此,让我们创建自定义验证器来检查电话号码。电话号码必须是至少8位数字,但不超过11位数字。1.新注释让我们创建一个新的@interface来定义我们的注释:@Documented@Constrain......
  • springboot项目构建docker镜像
    springboot项目构建docker镜像springboot项目构建成docker镜像的两种方式手动方式:将springboot项目打成一个jar包,将jar包上次到服务器的指定目录下(具备docker环境),然后在同一目录下编写Dockerfile文件,通过dockerbuild命令构建镜像,之后把镜像发布到远程仓库中。半自动方式:......
  • SpringCloud Gateway实战
    SpringCloudGateway目录SpringCloudGateway认识SpringCloudGatewaySpringCloudGateway和Zuul最核心的区别SpringCloudGateway工作模型图及解读SpringCloudGateway三大核心概念Route、Predicate、FilterSpringCloudGateway过滤器全局过滤器和局部过滤器SpringCloudGatew......
  • 基于苍穹外卖写的springboot学习笔记,私聊拿源码
    一.关于md5加密的了解与使用1.分析MD5加密是一种不可逆的加密算法。也就是说我们只能正向加密,无法反向解密。于是乎,当我们用它作为密码加密方式时,我们只能加密码从数据库拿来与前端传来的数据加密后进行比较。2.使用方法他是由springboot框架提供二.关于swagge......
  • Spring-Boot AOP 的简单创建
    AOP切面1.导依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>定义一个切面类@Aspect@ComponentpublicclassAop......
  • MySQL(六):MySQL之MVCC
    1、事务的引入事务是数据库管理系统(DBMS)执行过程中的一个逻辑单位(不可再进行分割),由一个有限的数据库操作序列构成(多个DML语句),要不全部成功,要不全部不成功。如:A给B划钱,A的账户-100元,B的账户就要+100元,这两个update语句必须作为一个整体来执行,不然A扣钱了,B没有加......
  • spring-event-事件监听机制实现
    1.事件监听机制概述1.场景模型版本更新了,新版本需要继承老版本的构件分享、自定义属性、着色数据,以后还可能有其他数据要继承,这些数据之间没有直接联系,就是当模型版本变更的时候,他们各自需要执行。2.涉及的三个对象事件源(提供事件处理时的元数据)这里就是模型版本更新了......
  • Spring知识回顾
    首先对于我们来说Spring是什么,Spring可以让我们对刚开始写项目时,有一个明确的框架结构,用比较专业的话来讲,就是使用IOC和AOP,即Inversionofcontrol控制反转和AspectOrientedProgramming面向切面编程,总结:Spring就是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架。学习IOC的组......
  • springboot项目接入普罗米修斯
    为了更好查询项目的运行状态,这次引入普罗米修斯监控pom依赖<!--starter-actuator--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency><!--下面是/actuato......
  • springboot 2.4.0 启动源码分析
    SpringBoot启动的基本配置SpringBoot启动的配置主要有以下两个部分添加依赖最基本的springboot依赖只需要添加一个springboot启动器的依赖即可,如果是web服务则添加web的启动器<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"......