组合注解,SpringBoot应用程序的入口类。用于启动程序。
@SpringBootApplication
public class CloudElasticSearchApplication {
public static void main(String[] args) {
SpringApplication.run(CloudElasticSearchApplication.class, args);
}
}
内部包括@Configuration、@EnableAutoConfiguration和@ComponentScan三个注解。
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}
)
@Configuration用于创建和配置Spring应用程序上下文中的Bean。
@EnableAutoConfiguration用于自动添加所需的依赖项和配置。
@ComponentScan用于扫描当前包及其子包中的所有类,如果某些类使用了@Component、@Controller等注解,注入Spring容器中。
@RestController处理请求时,会自动将方法的返回值转换为JSON格式的响应体,并返回给客户端。其包含了@Controller和@ResponseBody功能,如下所示:
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
@AliasFor(
annotation = Controller.class
)
String value() default "";
}
@Controller将该类声明进入Spring容器中进行管理
@ResponseBody表明该类的所有方法的返回值都直接进行提交而不经过视图解析器,且返回值的数据自动封装为json的数据格式
@RequestMapping用来处理请求地址映射的注解,可以用在类或方法上。@GetMapping则是在其基础上指定方法为GET(method=RequestMethod.GET),用于映射HTTP GET请求。同理@PostMapping、@PutMapping、@DeleteMapping也是如此。例如@GetMapping的内部实现如下:
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@RequestMapping(
method = {RequestMethod.GET}
)
public @interface GetMapping {......}
具体使用:
@RestController
@RequestMapping("/home")
public class ElasticSearchClientConfig {
@GetMapping("/user")
public String test(){
return "nih";
}
}
用于获取请求参数的值。可以通过@RequestParam(“id”)或者@RequestParam(value = “id”)指定传入的参数名。
@RestController
@RequestMapping("/home")
public class ElasticSearchClientConfig {
@GetMapping("/user")
public String test(@RequestParam(value = "name")String name ){
return "nih";
}
}
Lombok框架中的注解,用来生成日志记录器。
@Slf4j
public class ElasticSearchClientConfig {
public String test(){
log.debug("1");
log.info("2");
log.error("3");
return "nih";
}
}
@Data用于自动生成实体类中get()、set()、toString()、hashCode()和equals()方法。@NoArgsConstructor提供类的无参构造方法。@AllArgsConstructor提供类的全参构造方法。
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private String name;
private String password;
}