SpringBoot教程-Spring Boot 注解
Spring Boot 注解是一种元数据形式,提供有关程序的数据。换句话说,注释用于提供有关程序的补充信息。它不是我们开发的应用程序的一部分。它对它们注释的代码的运行没有直接影响。它不会改变已编译程序的操作。
在本节中,我们将讨论一些重要的Spring Boot 注解,我们将在本教程后面使用它们。
Spring 框架核心注解
@Required:适用于bean setter方法。它指示带注释的 bean 必须在配置时使用所需的属性填充,否则会抛出异常BeanInitilizationException。
例子
public class Machine
{
private Integer cost;
@Required
public void setCost(Integer cost)
{
this.cost = cost;
}
public Integer getCost()
{
return cost;
}
}
@Autowired: Spring通过提供@Autowired注解来提供基于注解的自动装配。它用于在 setter 方法、实例变量和构造函数上自动装配 spring bean。当我们使用@Autowired注释时,spring容器通过匹配数据类型来自动装配bean。
例子
@Component
public class Customer
{
private Person person;
@Autowired
public Customer(Person person)
{
this.person=person;
}
}
@Configuration:是类级别的注解。Spring 容器使用 @Configuration 注解的类作为 bean 定义的来源。
例子
@Configuration
public class Vehicle
{
@BeanVehicle engine()
{
return new Vehicle();
}
}
@ComponentScan:当我们想要扫描包中的bean时使用它。它与注释@Configuration 一起使用。我们还可以指定扫描 Spring 组件的基础包。
例子
@ComponentScan(basePackages = "cn.javatiku")
@Configuration
public class ScanComponent
{
// ...
}
@Bean:是方法级别的注解。它是 XML <bean> 标签的替代品。它告诉方法生成一个由 Spring 容器管理的 bean。
例子
@Bean
public BeanExample beanExample()
{
return new BeanExample ();
}
Spring框架构造型注解
@Component:它是类级别的注释。它用于将 Java 类标记为 bean。在类路径中找到用@Component注解的Java 类。Spring 框架选择它并在应用程序上下文中将其配置为Spring Bean。
例子
@Component
public class Student
{
.......
}
@Controller: @Controller 是类级别的注释。它是@Component的专业化。它将一个类标记为 Web 请求处理程序。它通常用于提供网页服务。默认情况下,它返回一个字符串,指示要重定向的路由。它主要与@RequestMapping注释一起使用。
例子
@Controller
@RequestMapping("books")
public class BooksController
{
@RequestMapping(value = "/{name}", method = RequestMethod.GET)
public Employee getBooksByName()
{
return booksTemplate;
}
}
@Service:它也用于类级别。它告诉 Spring 该类包含业务逻辑。
例子
package cn.javatiku;
@Service
public class TestService
{
public void service1()
{
//business code
}
}
@Repository:是类级别的注解。存储库是直接访问数据库的DAO (数据访问对象)。存储库执行与数据库相关的所有操作。
package cn.javatiku;
@Repository
public class TestRepository
{
public void delete()
{
//persistence code
}
}
Spring Boot 注解
- @EnableAutoConfiguration:它自动配置类路径中存在的 bean 并将其配置为运行方法。Spring Boot 1.2.0 版本中减少了此注解的使用,因为开发人员提供了该注解的替代方案,即@SpringBootApplication。
- @SpringBootApplication:它是@EnableAutoConfiguration、@ComponentScan和@Configuration三个注解的组合。
Spring MVC 和 REST 注解
- @RequestMapping:用于映射网络请求。它有许多可选元素,如Consumers、 header、 method、 name、 params、 path、 Produce和value。我们将它与类和方法一起使用。
例子
@Controller
public class BooksController
{
@RequestMapping("/computer-science/books")
public String getAllBooks(Model model)
{
//application code
return "bookList";
}
- @GetMapping:它将HTTP GET请求映射到特定的处理程序方法上。它用于创建一个提取的 Web 服务端点,而不是使用:@RequestMapping(method = RequestMethod.GET)
- @PostMapping:它将HTTP POST请求映射到特定的处理程序方法上。它用于创建一个 Web 服务端点,该端点创建它而不是使用:@RequestMapping(method = RequestMethod.POST)
- @PutMapping:它将HTTP PUT请求映射到特定的处理程序方法上。它用于创建一个创建或更新的Web 服务端点,而不是使用:@RequestMapping(method = RequestMethod.PUT)
- @DeleteMapping:它将HTTP DELETE请求映射到特定的处理程序方法上。它用于创建删除资源的 Web 服务端点。它被用来代替使用:@RequestMapping(method = RequestMethod.DELETE)
- @PatchMapping:它将HTTP PATCH请求映射到特定的处理程序方法上。它被用来代替使用:@RequestMapping(method = RequestMethod.PATCH)
- @RequestBody:用于将HTTP请求与方法参数中的对象绑定。它在内部使用HTTP MessageConverters来转换请求的正文。当我们使用 @RequestBody 注解方法参数时, Spring 框架会将传入的 HTTP 请求正文绑定到该参数。
- @ResponseBody:它将方法返回值绑定到响应主体。它告诉 Spring Boot 框架将返回的对象序列化为 JSON 和 XML 格式。
- @PathVariable:用于从 URI 中提取值。它最适合 URL 包含路径变量的 RESTful Web 服务。我们可以在一个方法中定义多个@PathVariable。
- @RequestParam:用于从URL中提取查询参数。它也称为查询参数。它最适合Web应用程序。如果 URL 中不存在查询参数,它可以指定默认值。
- @RequestHeader:用于获取HTTP请求头的详细信息。我们使用这个注解作为方法参数。注释的可选元素是名称、必需、值、默认值。对于标题中的每个细节,我们应该指定单独的注释。我们可以在一个方法中多次使用它
- @RestController:可以认为是@Controller和@ResponseBody注解的组合。@RestController 注释本身使用 @ResponseBody 注释进行注释。它消除了使用 @ResponseBody 注释每个方法的需要。
- @RequestAttribute:它将方法参数绑定到请求属性。它提供了从控制器方法对请求属性的便捷访问。借助@RequestAttribute注释,我们可以访问服务器端填充的对象。