Springboot注解

什么是Spring Boot 注解

Spring Boot 注解是 Spring Boot 框架中的核心部分,它们用于简化配置和执行特定的编程任务。这些注解通常分为几个类别,包括用于 MVC 层的类注解、依赖注入注解、Web 开发常用注解、Spring Boot 常用注解、面向切面编程(AOP)注解、测试相关注解以及其他常用注解。

MVC 层类注解

在 Spring Boot 的 MVC 模式中,有几个关键的类注解用于定义不同层次的组件:

  • @Controller:用于标记控制层的组件,处理 HTTP 请求。

  • @Service:应用于服务层,包含业务逻辑。

  • @Repository:用于标记数据访问层,即 DAO 组件。

  • @Component:泛指组件,当组件不易归类时使用。

依赖注入注解

依赖注入注解用于自动装配 Spring 应用程序中的 Bean:

  • @Autowired:按类型自动注入。

  • @Resource:可以按名称或类型注入。

  • @Value:用于注入基本类型和 String 类型的属性。

Web 开发常用注解

Web 开发中常用的注解包括:

  • @RequestMapping:映射 HTTP 请求到控制器方法。

  • @RequestParam:绑定请求参数到方法参数。

  • @PathVariable:绑定路径变量到方法参数。

  • @ResponseBody@RequestBody:用于请求和响应的体处理。

  • @RestController :组合了 @Controller@ResponseBody,用于 RESTful Web 服务。

  • @ControllerAdvice@ExceptionHandler:用于全局异常处理。

Spring Boot 常用注解

Spring Boot 提供了一些注解来简化配置和自动配置:

  • @SpringBootApplication:标记主程序类,开启自动配置。

  • @EnableAutoConfiguration:开启自动配置功能。

  • @Configuration:标记配置类,相当于传统的 XML 配置文件。

  • @ComponentScan:自动扫描并加载符合条件的组件或 Bean。

案例解释

1.@Controller

表示此类为控制器类 需要与其他注解配合使用 返回html页面, 走的是视图解析内容

相关展示

View.html中代码

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>我的页面</title>
</head>
<body>
  <div>我的页面</div>
<hr>

</body>
</html>

2.@RequestMapping

@RequestMapping("/view") 请求映射注解 配置显示的路由

java 复制代码
@Controller
public class ViewController {

    @RequestMapping("/view")
    public String view(){
        return "view.html";
    }

}

http://localhost:8080/view 配置路由 配合**@Controller展示**

配合模板使用

java 复制代码
 @RequestMapping("data")
    public ModelAndView data(){
        ModelAndView mv=new ModelAndView(PAGE);  //可携带参数
        mv.addObject("str1" ,"我叫hello");//需要添加模版依赖
        mv.addObject("str2","我是张三");
        return mv;
    }

需要配合freemarker来进行

要配置相关信息 添加依赖

java 复制代码
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency>

3.@RequestParam

用于设置URL上参数并收集数据

java 复制代码
 public static final String PAGE= "parma.html";

@RequestMapping("/parma")
    public ModelAndView parma(@RequestParam(value = "id",defaultValue = "0",required = false) int id,
                              @RequestParam(value = "type",defaultValue = "1")String type){

        ModelAndView modelAndView = new ModelAndView(PAGE);
        modelAndView.addObject("id", id);
    
        return modelAndView;
    
    }

这里设置了参数 id & type

http://localhost:8080/parma?id=10&type=2

可以通过前端可以通过id,type进行传参

4.@PathVariable

设置多级路由

java 复制代码
@Controller
public class ParamsController {
    public static final String PAGE= "parma.html";

    @RequestMapping("/parma/{id}/{type}")
    public ModelAndView parma(@PathVariable(required = false) int id,
                              @PathVariable(required = false)String type){
    
        System.out.println("id:"+id);
        System.out.println("type:"+type);
        ModelAndView modelAndView = new ModelAndView(PAGE);
        modelAndView.addObject("id", id);
    
        return modelAndView;
    
    }

}

请求地址http://localhost:8080/parma/10/20

5.@RestController

1.返回的是输出结果,如json,是提供前端获取数据,提交数据

2.结合@RequestMapping,GetMapping,@PostMapping

java 复制代码
@RestController 
@RequestMapping("rest")  //查询数据
public class RestFullController {

    @GetMapping("get") //http://localhost:8080/rest/get 
    public String get(){
        return "i am here"; //直接将字符串显示到页面上
    }

}
java 复制代码
还可以直接返回一个对象 为字典形式展示

@RestController
@RequestMapping("rest")
public class RestFullController {

    @GetMapping("get") //http://localhost:8080/rest/get
    public UserRequest get(){
        UserRequest userRequest = new UserRequest("张三",19,"男");
        return userRequest;
    }   返回{name:"张三",age:19,sex:"男"}

}



  @GetMapping("{id}")
    public UserRequest getById(@PathVariable("id") int id){
        UserRequest use=new UserRequest(id,18,"男");
        return use;
    }

6.@PostMapping

java 复制代码
@PostMapping  //新增数据 前端传递一个UserRequest对象数据
public UserRequest post(@RequestBody UserRequest userRequest){
    System.out.println(userRequest);
    return userRequest;
}

7.@RequestBody

因为从前端传回来的数据对象UserRequest是一个请求体 所以要用@RequestBody

进行修饰 绑定到形参上 后端也要用一个对象接收

8.@ResponseBody

@ResponseBody不走视图解析,直接显示内容

java 复制代码
@Controller
public class ParamsController {
    public static final String PAGE= "parma.html";

    @GetMapping("parma/get")
    @ResponseBody   //如果没有这个就会请求不到数据
    public UserRequest getUser(){
        UserRequest userRequest = new UserRequest("100",120,"男");
        return userRequest;
    }


}

@Controller配合@ResponseBody使用 :

也就是:@Controller+@ResponseBody=@RestContoller

9.@CrossOrigin

用于解决跨域问题

10.@Service

注册bean

11.@Autowired

获取bean 就不需要用 new了

12.@Component

也是bean注册 组件

13.@Resource

java 复制代码
@Resource(name="接口name")

用于实现接口实例化    

@Resource(name="adminServiceImpl")

private UserService userService;

14.@Qualifier

需要配合@Autowired 指定

@Autowired

复制代码
@Qualifier("admin")

@Resource=@Autowired+@Qualifier

总的来说

1.如果接口实现只有一个那么用@Autowired就可以了,也不需要指定名字

2.如果接口实现有多个,用@Resource,并指定name(建议)

3.或者使用@Autowired+@Qualifier

15.@Configuration+@Bean

用于手动注册bean对象

16.@Values

从配置文件中取参数

在application.properies中配置信息

java 复制代码
@Value("${view.username}")
private String username;


   @Value("${view.page}")
    private String page;

这样就可以直接拿到配置中的参数

相关推荐
火烧屁屁啦13 分钟前
【JavaEE进阶】初始Spring Web MVC
java·spring·java-ee
w_312345427 分钟前
自定义一个maven骨架 | 最佳实践
java·maven·intellij-idea
岁岁岁平安29 分钟前
spring学习(spring-DI(字符串或对象引用注入、集合注入)(XML配置))
java·学习·spring·依赖注入·集合注入·基本数据类型注入·引用数据类型注入
武昌库里写JAVA33 分钟前
Java成长之路(一)--SpringBoot基础学习--SpringBoot代码测试
java·开发语言·spring boot·学习·课程设计
Q_192849990640 分钟前
基于Spring Boot的九州美食城商户一体化系统
java·spring boot·后端
Q_192849990644 分钟前
基于Spring Boot的营销项目系统
spring boot
张国荣家的弟弟1 小时前
【Yonghong 企业日常问题 06】上传的文件不在白名单,修改allow.jar.digest属性添加允许上传的文件SH256值?
java·jar·bi
ZSYP-S1 小时前
Day 15:Spring 框架基础
java·开发语言·数据结构·后端·spring
yuanbenshidiaos1 小时前
C++----------函数的调用机制
java·c++·算法