Spring Boot注解通俗易懂版
Spring Boot注解开发是为了简化Spring应用程序的开发和部署过程。通过使用注解,开发人员可以轻松地配置和管理Spring应用程序的各个方面,如数据访问、Web服务、安全性等。Spring Boot提供了许多预定义的注解,这些注解可以帮助开发人员在应用程序中快速实现常见的功能和任务。以下是我学习过程中,一下简单的个人理解。
@SpringBootApplication
@SpringBootApplication是用于标识一个主程序类。该注解包含了多个其他注解,用于自动配置Spring Boot应用程序的各个方面,如自动扫描组件、配置属性、启用自动配置等。
简单来说,就是一个就是程序的主入口,代码是固定的。如下:
@SpringBootApplication
public class Java1234VoteApplication {
public static void main(String[] args) {
SpringApplication.run(Java1234VoteApplication.class, args);
}
}
controller层常用注解
@controller
@Controller注解是用于标识一个类为控制器(Controller)。控制器负责接收和处理客户端的请求,并生成相应的响应。
使用@Controller注解标记的类可以包含多个处理请求的方法,这些方法通过@RequestMapping注解来指定处理特定请求的URL路径和请求方法。当客户端发送请求时,Spring MVC会根据URL路径和请求方法找到匹配的方法,并执行该方法进行处理。
@Controller注解通常与视图解析器(View Resolver)一起使用,用于将处理结果渲染为具体的视图。在处理请求的方法中,可以通过返回逻辑视图名或ModelAndView对象来指定要渲染的视图。
总之,@Controller注解用于标识一个类为控制器,其中的方法用于处理客户端的请求,并生成相应的响应。它是构建基于Spring MVC的Web应用程序的重要组成部分。
@Controller // 标识为控制器
public class ExampleController {
@RequestMapping("/hello") // 处理路径为 /hello 的请求
@ResponseBody // 将返回值直接作为响应体返回
public String hello() {
return "Hello, World!"; // 返回字符串作为响应
}
}
@RequestMapping
@RequestMapping是用于将一个方法或类映射到特定的URL路径和请求方法上。它可以用于控制器类中的方法,也可以用于整个控制器类上。简单来说,就是你请求的路劲如果和其标注的路径符合,spring会自动调用这个方法。
当用于方法上时,@RequestMapping注解可以指定处理特定URL路径的请求。例如:
@Controller
public class ExampleController {
@RequestMapping("/hello")
public String hello() {
return "Hello, World!";
}
}
在上述示例中,当客户端发送GET请求到路径"/hello"时,该控制器方法 hello()
将被调用。它会返回字符串"Hello, World!"作为响应。
除了指定URL路径外,@RequestMapping还可以通过 method
属性指定处理请求的HTTP方法。例如:
@Controller
public class ExampleController {
@RequestMapping(value = "/hello", method = RequestMethod.POST)
public String hello() {
return "Hello, World!";
}
}
在这种情况下, hello()
方法将只处理POST请求到路径"/hello"的请求。
当用于类上时,@RequestMapping注解可以为整个控制器类指定一个基本的URL路径。这样,控制器中的所有方法都将相对于该基本路径进行映射。例如:
@Controller
@RequestMapping("/example")
public class ExampleController {
@RequestMapping("/hello")
public String hello() {
return "Hello, World!";
}
}
在上述示例中, hello()
方法将处理路径为"/example/hello"的请求。
@RequestParam
@RequestParam是用于将请求参数绑定到方法的参数上。它可以用于控制器方法的参数上,用于获取客户端传递的请求参数的值。简单来说:@RequestParam是用来接受?后面的参数。例如:
@Controller
public class ExampleController {
@RequestMapping("/hello")
public String hello(@RequestParam("name") String name) {
return "Hello, " + name + "!";
}
}
请求路径为:http://localhost:8800/hello?name=zhangshan
结果如下:
在上述示例中, hello()
方法的参数 name
被注解为@RequestParam(“name”),表示该方法需要获取名为"name"的请求参数的值。比如:请求地址为http://localhost:8800/hello?name=zhangshan,当客户端发送请求时,Spring MVC会自动将请求参数的值绑定到该方法的参数上,则方法中的name就可以获得zhangshan这个数据,并执行方法逻辑。
@RequestParam注解还支持其他属性,例如:
required
:指定该参数是否为必需参数,默认为true,如果请求中没有该参数,则会抛出异常。defaultValue
:指定该参数的默认值,在请求中没有该参数时使用默认值。
@Controller
public class ExampleController {
@RequestMapping("/hello")
public String hello(@RequestParam(value = "name", required = false, defaultValue = "Guest") String name) {
return "Hello, " + name + "!";
}
}
在上述示例中, name
参数被标记为非必需参数,并设置了默认值为"Guest"。如果客户端请求中没有传递该参数,将使用默认值"Guest"。
@PathVariable
@PathVariable是用于将URL路径中的占位符参数绑定到方法的参数上。它可以用于控制器方法的参数上,用于获取URL路径中的动态参数的值。
使用@PathVariable注解时,需要在URL路径中使用占位符来表示参数的位置。例如:
@Controller
public class ExampleController {
@RequestMapping("/hello/{name}")
public String hello1(@PathVariable("name") String name) {
System.out.println("Hello, " + name + "!");
return "ok";
}
}
在上述示例中, hello()
方法的参数 name
被注解为@PathVariable(“name”),表示该方法需要获取URL路径中名为"name"的占位符参数的值。当客户端发送请求时,Spring MVC会自动将URL路径中的参数值绑定到该方法的参数上,并执行方法逻辑。
@PathVariable注解还支持其他属性,例如:
required
:指定该参数是否为必需参数,默认为true,如果URL路径中没有该参数,则会抛出异常。defaultValue
:指定该参数的默认值,在URL路径中没有该参数时使用默认值。
@Controller
public class ExampleController {
@RequestMapping("/hello/{name}")
public String hello(@PathVariable(value = "name", required = false, defaultValue = "Guest") String name) {
System.out.println("Hello, " + name + "!");
return "ok";
}
}
在上述示例中, name
参数被标记为非必需参数,并设置了默认值为"Guest"。如果URL路径中没有传递该参数,将使用默认值"Guest"。
@RestController
@RestController是用于标识一个控制器类,表示该类是一个RESTful风格的控制器。与@Controller注解不同的是,@RestController注解会自动将控制器返回的对象转换为JSON或XML格式的响应,而不需要额外的视图解析器。
使用@RestController注解时,可以在控制器类的方法上使用@RequestMapping注解来定义RESTful风格的请求路径和请求方法。例如:
@RestController
@RequestMapping("/api")
public class ExampleController {
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String hello() {
return "Hello, World!";
}
}
在上述示例中, ExampleController
类被注解为@RestController,表示该类是一个RESTful风格的控制器。 hello()
方法被注解为@RequestMapping(value = “/hello”, method = RequestMethod.GET),表示该方法处理路径为"/api/hello"的GET请求。方法返回的字符串"Hello, World!"会被自动转换为JSON格式的响应。
@RequestBody
@RequestBody是用于将HTTP请求体中的数据绑定到方法的参数上。它可以用于控制器方法的参数上,用于获取请求体中的数据。
使用@RequestBody注解时,Spring MVC会自动将请求体中的数据转换为方法参数所需的对象类型。通常,请求体中的数据是以JSON或XML格式传输的。例如:
@RestController
@RequestMapping("/api")
public class ExampleController {
@PostMapping("/user")
public String createUser(@RequestBody User user) {
// 处理user对象
return "User created: " + user.getName();
}
}
在上述示例中, createUser()
方法的参数 user
被注解为@RequestBody,表示该方法需要从请求体中获取用户对象的数据。当客户端发送POST请求时,请求体中的JSON或XML数据会被自动转换为 User
对象,并绑定到 user
参数上。
@RequestBody注解还支持其他属性,例如:
required
:指定该参数是否为必需参数,默认为true,如果请求体中没有该参数,则会抛出异常。defaultValue
:指定该参数的默认值,在请求体中没有该参数时使用默认值。
@RestController
@RequestMapping("/api")
public class ExampleController {
@PostMapping("/user")
public String createUser(@RequestBody(required = false) User user) {
if (user == null) {
return "No user data provided";
}
return "User created: " + user.getName();
}
}
在上述示例中, user
参数被标记为非必需参数。如果请求体中没有提供用户数据,则会返回"No user data provided"。