SpringMVC常用注解有哪些

简介: SpringMVC常用注解有哪些

前言:
本次注解分3层讲解,先说明注解的用途,然后有对应层次的完整代码,代码中有对应的注解的实战用法(含详细注释)
本次所讲的层级结构截图:
在这里插入图片描述

一.domian(实体类)

lombok家族注解用于实体类,帮助简化实体类的编写。

  1. @Setter
    用于实体类,自动生成setter方法
  2. @Getter
    用于实体类,自动生成getter方法
  3. @ToString
    用于实体类,自动重写toString()方法,返回所有属性变量名和变量值。
  4. @EqualsAndHashCode
    自动生成 equals(Object other) 和 hashcode() 方法,包括所有非静态变量和非 transient 的变量
  5. @AllArgsConstructor
    用于实体类,生成一个包含所有参数的构造器
  6. @NoArgsConstructor
    用于实体类,生成一个无参的构造器
  7. @RequiredArgsConstructor
    生成一个包含 “特定参数” 的构造器,特定参数指的是那些有加上 final 修饰词的变量们;
    如果所有的变量都是正常的,都没有用 final 修饰的话,那就会生成一个没有参数的构造器
  8. @Data
    整合包,只要加了 @Data 这个注解,等于同时加了以下注解:
    @Getter
    @Setter
    @ToString
    @EqualsAndHashCode
    @RequiredArgsConstructor

实体类例子:
domain包中的类:
在这里插入图片描述
Hero类完整代码:

package com.ysw.springboot01.domain;

import lombok.Data;

@Data
public class Hero {
    

    private int id;
    private String name;
    private int age;
    private String sex;
    private long price;
    private int type_id;

}


二.mapper层注解

@Select("sql语句")
mybatis家族注解,非spring家族注解,在mybatis中,mybatis的前身是ibatis。
作用:自动把注解封装成jdbc里的sql语句,把sql提取出来,到数据库中查,查完以后把查询出的结果集封装到java对象中。

@Mapper
用在接口类上,在编译之后会生成相应的接口实现类,是mybatis的注解。
位置:对应的某个接口类上面

@Repository
@Repository作用于mapper层,Repository注解会创建实现类的对象,存入spring容器中。

mapper层例子:
mapper层包中的类和接口:
在这里插入图片描述
IHeroMapper接口完整代码:

package com.ysw.springboot01.mapper;

import com.ysw.springboot01.domain.Hero;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;

import java.util.List;

/*
* @Mapper,用在接口类上,在编译之后会生成相应的接口实现类,是mybatis的注解。
* Repository注解,作用于mapper层,会创建实现类的对象,存入spring容器中
* */
@Mapper
@Repository
public interface IHeroMapper {
     


    /*
    * Select注解,该注解在mybatis中,mybatis的前身是ibatis;
    * 作用:自动把注解封装成jdbc里的sql语句,把sql提取出来,
    *      到数据库中查,查完以后把查询出的结果集封装到list集合中
    * */
    @Select("SELECT * FROM hero")
    //查询所有英雄数据
    List<Hero> selectAllHero();
}


3.service层注解

@Autowired
自动注入,它会自动从spring容器中搜索符合类型的对象,给作用的成员属性赋值。

@Service
@Service注解作用于service层,
与上述注解@Repository实现过程类似,它的作用是自动创建实现类的对象并且存入spring容器中。

service层例子:
service层包中的类和接口:
在这里插入图片描述

IHeroService接口完整代码:

package com.ysw.springboot01.service;

import com.ysw.springboot01.domain.Hero;

import java.util.List;

public interface IHeroService {
      

    List<Hero> selectAllHero();
}

 

HeroServiceImpl实现类完整代码:

package com.ysw.springboot01.service.impl;

import com.ysw.springboot01.domain.Hero;
import com.ysw.springboot01.mapper.IHeroMapper;
import com.ysw.springboot01.service.IHeroService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

//@Service注解,创建service实现类的对象,并且存入spring容器中
@Service
public class HeroServiceImpl implements IHeroService {
       

    //用@Autowired直接从spring容器中取出mapper层存入spring容器的实现类的对象
    @Autowired
    private IHeroMapper mapper;

    @Override
    public List<Hero> selectAllHero() {
       
        //调用mapper层
        return mapper.selectAllHero();
    }
}

四.controller层

@RequestMapping("/hero")
映射请求路径,相当于servlet中的@WebServlet注解,用于Controller层的类和方法体,
访问时是两层路径,类是一级路径,方法是二级路径。

@Controller
创建Controller类的对象,存入spring容器中,由服务器从spring容器中得到该对象,并调用其方法,
与上述注解@Service,@Repository类似,他们都是创建类的对象并存入spring容器中。

@ResponseBody
这个注解通常使用在controller层,响应数据给客户端,类似于servlet中的response.getWrite().write()。
它将java对象转为json格式的数据,其作用是将方法的返回值以特定的格式写入到response的body区域,进而将数据返回给客户端。假如返回值是字符串则直接将字符串写到客户端,假如是一个对象,此时会将对象转化为json串然后写到客户端。
ps:这里需要注意的是,如果返回对象,按utf-8编码。如果返回String,默认按iso8859-1编码,页面可能出现乱码。因此在注解中我们可以手动修改编码格式,例如@RequestMapping(value = "/selectAll",produces = "application/json;charset=utf-8")

controller层例子:
controller层包中的类和接口:
在这里插入图片描述
HeroController类完整代码:

package com.ysw.springboot01.controller;

import com.ysw.springboot01.domain.Hero;
import com.ysw.springboot01.service.IHeroService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

@RequestMapping("/hero") //映射请求路径,相当于servlet中的@WebServlet注解,一级路径
@Controller //创建Controller类的对象,存入spring容器中,由服务器来调用
public class HeroController {
        

    //从spring容器总取出service层的对象,自动注入
    @Autowired
    private IHeroService service ;

    /* * 每个方法都需要有转这个步骤,即需要有一下两个思路中的一种 * 1.跳转到某个页面,thymeleaf页面 * 2.响应数据给客户端 @ResponseBody注解 * */


    @RequestMapping(value = "/selectAll",produces = "application/json;charset=utf-8") //二级路径
    /* * 在后台生成一个java对象listHero,用于返回给页面; * 经过@ResponseBody的作用后直接转成了json格式,如果没有这个转化的话,我们前台得到的是Object对象 * */
    @ResponseBody
    //查询所有英雄数据
    public List<Hero> selectAllHero(){
        
        List<Hero> listHero = service.selectAllHero();
       return listHero;
    }


    @RequestMapping("/showAllHero") //二级路径
    //查询所有英雄数据,显示出来
    public String selectShowAllHero(Model model){
        
        List<Hero> heroes = service.selectAllHero();
        model.addAttribute("heroes",heroes);
        return "hero";
    }

}


五.启动类注解

@MapperScan("package包路径")
作用:扫描指定包下所有的接口,然后所有接口在编译之后都会生成相应的实现类
位置:是在SpringBoot启动类上面添加,

@SpringBootApplication
在主方法上使用,是一个组合注解,用于快捷配置启动类。

启动类例子:
启动类:
在这里插入图片描述
启动类完整代码:

package com.ysw.springboot01; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; //在主方法上使用,是一个组合注解,用于快捷配置启动类 @SpringBootApplication //扫描指定包下所有的接口类,然后所有接口在编译之后都会生成相应的实现类 //@MapperScan("com.ysw.springboot01.mapper") public class Springboot01Application {
          public static void main(String[] args) {
          SpringApplication.run(Springboot01Application.class, args); } } 
目录
相关文章
|
JSON 前端开发 Java
springMVC常用注解
springMVC常用注解
116 0
|
9月前
|
前端开发 程序员
SpringMVC常用注解说明
SpringMVC常用注解说明
|
JSON Java 数据格式
SpringMVC 常用注解有哪些?
SpringMVC 常用注解有哪些?
56 0
|
XML 前端开发 Java
springMvc8-springmvc常用注解代码
springMvc8-springmvc常用注解代码
92 0
springMvc8-springmvc常用注解代码
|
Java 数据安全/隐私保护
springMvc6-springMVC的常见注解
springMvc6-springMVC的常见注解
133 0
|
前端开发 Java Spring
SpringMVC - 注解方式(上)
SpringMVC - 注解方式(上)
117 0
SpringMVC - 注解方式(上)
|
JSON 前端开发 JavaScript
SpringMVC - 注解方式(中)
SpringMVC - 注解方式(中)
106 0
SpringMVC - 注解方式(中)
|
Java 数据安全/隐私保护
SpringMVC - 注解方式(下)
SpringMVC - 注解方式(下)
84 0
SpringMVC - 注解方式(下)
|
XML JSON 前端开发
SpringMVC的常用注解(四)中
SpringMVC的常用注解(四)
SpringMVC的常用注解(四)中
|
Java 程序员 Spring
SpringMVC的常用注解(三)中
SpringMVC的常用注解(三)
144 0
SpringMVC的常用注解(三)中