首页 > 其他分享 >Spring MVC常用注解汇总

Spring MVC常用注解汇总

时间:2023-03-19 09:12:48浏览次数:57  
标签:userDao String Spring Resource MVC 注解 public RequestMapping

 @Controller
@Controller注解在类上,表明这个类是Spring MVC里的Controller,将其声明为Spring的一个Bean,Dispatch Servlet会自动扫描注解了此注解的类,并将Web请求映射到注解了@RequestMapping的方法上,需要注意的是,在Spring MVC声明控制器Bean的时候,只能使用@Controller。

@RequestMapping
@RequestMapping注解是用来映射Web请求(访问路径和参数)、处理类和方法的。它可以注解在类和方法上。注解在方法上的@RequestMapping路径会继承注解在类上的路径,@RequestMapping支持Servlet的request和response作为参数,也支持对它们的媒体类型进行配置。

@RequestBody
@RequestBody允许request的参数在request体中,而不是在直接链接在地址后面。此注解放在参数前。

@RestController
@RestController是一个组合注解,组合了@Controller和@ResponseBody,意味着当只开发一个和页面交互数据的控制的时候,需要使用此注解。 若没有此注解,要想实现上述功能,则需自己在代码中加@Controller和@ResponseBody两个注解。
 

@Autowired

@Autowired为Spring提供的注解,需要导入包org.springframework.beans.factory.annotation.Autowired;只按照byType注入。

public class HelloWorld{
    // 下面两种@Autowired只要使用一种即可
    @Autowired
    private UserDao userDao; // 用于字段上
    
    @Autowired
    public void setUserDao(UserDao userDao) { // 用于属性的方法上
        this.userDao = userDao;
    }
}

@Autowired注解是按照类型(byType)装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它的required属性为false。如果我们想使用按照名称(byName)来装配,可以结合@Qualifier注解一起使用。如下:

public class HelloWorld{ 
  @Autowired 
  @Qualifier("userDao") 
  private UserDao userDao; 
}

@Resource
@Resource默认按照ByName自动注入,由J2EE提供,需要导入包javax.annotation.Resource。@Resource有两个重要的属性:name和type,而Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以,如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不制定name也不制定type属性,这时将通过反射机制使用byName自动注入策略。

public class HelloWorld{
    // 下面两种@Resource只要使用一种即可
    @Resource(name="userDao")
    private UserDao userDao; // 用于字段上
    
    @Resource(name="userDao")
    public void setUserDao(UserDao userDao) { // 用于属性的setter方法上
        this.userDao = userDao;
    }
}

 

注:最好是将@Resource放在setter方法上,因为这样更符合面向对象的思想,通过set、get去操作属性,而不是直接去操作属性。

@PathVariable

用于将请求URL中的模板变量映射到功能处理方法的参数上,即取出uri模板中的变量作为参数。如:

@Controller  
public class TestController {  
     @RequestMapping(value="/user/{userId}/roles/{roleId}",method = RequestMethod.GET)  
     public String getLogin(@PathVariable("userId") String userId,  
         @PathVariable("roleId") String roleId){  
         System.out.println("User Id : " + userId);  
         System.out.println("Role Id : " + roleId);  
         return "hello";  
     }  
     @RequestMapping(value="/product/{productId}",method = RequestMethod.GET)  
     public String getProduct(@PathVariable("productId") String productId){  
           System.out.println("Product Id : " + productId);  
           return "hello";  
     }  
     @RequestMapping(value="/javabeat/{regexp1:[a-z-]+}",  
           method = RequestMethod.GET)  
     public String getRegExp(@PathVariable("regexp1") String regexp1){  
           System.out.println("URI Part 1 : " + regexp1);  
           return "hello";  
     }  
}  

@CookieValue

作用:用来获取Cookie中的值;

参数: value:参数名称 required:是否必须 defaultValue:默认值

使用案例:

    /**
     * 获取 Session
     * JSESSIONID=411A032E02A2594698F6E3F4458B9CE4
     */
    @RequestMapping("/testCookieValue")
    public String testCookieValue(@CookieValue("JSESSIONID") String sessionId) {
        System.out.println("JSESSIONID = " + sessionId);
        return "success";
    }

 

@RequestParam

@RequestParam用于将请求参数区数据映射到功能处理方法的参数上,用例:

     /**
     * @RequestParam("id") 带参映射
     * @param id
     * @return
     */
    @RequestMapping("/testRequestParam")
    public String testRequestParam(@RequestParam("id") int id) {
        System.out.println("testRequestParam  " + id);
        return "success";
    }

 

@ResponseBody
作用: 该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。

使用时机:返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用。
 

标签:userDao,String,Spring,Resource,MVC,注解,public,RequestMapping
From: https://www.cnblogs.com/2324hh/p/17232445.html

相关文章

  • SpringAll(1-12)复习
    1-12复习详细解释Thymeleaf月springboot的关系Thymeleaf是一个现代化的Java模板引擎,它允许开发人员使用自然模板语言来创建动态网页。而SpringBoot是一个快速开发框架,它......
  • Spring MVC-第二部分内容
    SpringMVC-第二天1.学习目标2.拦截器2.1.基本概念SpringMVC中的Interceptor拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理。......
  • Spring Boot Thymeleaf 模板引擎
    我们之前开发,我们需要将前端转成jsp页面,jsp好处就是当我们查出一些数据转发到JSP页面以后,我们可以用jsp轻松实现数据的显示,及交互等。jsp支持非常强大的功能,包括能写Java......
  • spring源码小知识点---ignoreDependencyType()和ignoreDependencyInterface()
    一.含义ConfigurableListableBeanFactory中的2个方法://这个是忽略依赖该类型属性的注入;ignoreDependencyType();//这个是忽略该接口的实现类里的属性自动注入(忽略的是......
  • Spring 用了哪些设计模式?说三种即可
    策略模式工厂方法模式Builder模式策略模式策略模式就是一个接口下有多个实现类,而每种实现类会处理某一种情况。比如我们在抽奖系统中,有多种奖励方式可供选......
  • 元注解
     *元注解:注解类上的注解*@Retention(RetentionPolicy.RUNTIME):Annotation这个注解的存活时间,不写默认是源码阶段,RUNTIME是运行时阶段,就是Class字节码文件*@Targ......
  • spring
    1 从容器中拿对象:getBean(Class):按照类型拿bean;getBean(String):按照名字拿bean;getBean(String,Class):按照名字和类型拿;(推荐)2DI依赖注入 3 spring加载过......
  • 一次 Hyperf 注解失效问题分析
    问题环境PHP:8.0.13Swoole:4.6.2Hyperf:2.2.33运行环境:DockerDesktoponWSL2文章会持续修订,转载请注明来源地址:https://her-cat.com/posts/2023/03/02/hyp......
  • Spring Study -lesson12 -AOP(一)-2023-03-18
    AOP方法一:通过SpringAPI接口实现<beanid="userService"class="com.feijian.service.UserServiceImpl"/><beanid="log"class="com.feijian.log.Log"/>......
  • SpringCloud-搭建eurekaServer
    Eureka介绍整体介绍背景:在传统应用中,组件之间的调用,通过有规范的约束的接口来实现,从而实现不同模块间良好的协作。但是被拆分成微服务后,每个微服务实例的网络地址都可......