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;

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

相关推荐
苍煜33 分钟前
Maven构建流程详解:如何正确管理微服务间的依赖关系-当依赖的模块更新后,我应该如何重新构建主项目
java·微服务·maven
冼紫菜36 分钟前
[特殊字符]CentOS 7.6 安装 JDK 11(适配国内服务器环境)
java·linux·服务器·后端·centos
isyangli_blog1 小时前
(1-4)Java Object类、Final、注解、设计模式、抽象类、接口、内部类
java·开发语言
秋野酱2 小时前
Spring Boot 项目的计算机专业论文参考文献
java·spring boot·后端
码视野2 小时前
基于Spring Boot和Vue的在线考试系统架构设计与实现(源码+论文+部署讲解等)
vue.js·spring boot·系统架构
士别三日&&当刮目相看2 小时前
数据结构*优先级队列(堆)
java·数据结构
香饽饽~、2 小时前
【第二篇】 初步解析Spring Boot
java·spring boot·后端
坎布里奇2 小时前
java -jar命令运行 jar包时如何运行外部依赖jar包
java·pycharm·jar
冷yan~3 小时前
GitHub文档加载器设计与实现
java·人工智能·spring·ai·github·ai编程