下面是针对“零基础入门学习——SpringBoot注解(一)”的完整攻略讲解。
简介
本文主要介绍SpringBoot注解的使用方法,包含基本注解的使用和自定义注解的使用。如果你还没有学习过SpringBoot框架,可以先阅读“零基础入门学习——SpringBoot(一)”和“零基础入门学习——SpringBoot(二)”,前者介绍了SpringBoot的基础知识,后者介绍了如何配置SpringBoot项目。
基本注解
@SpringBootApplication
@SpringBootApplication
是SpringBoot应用程序的主注解,常用于应用程序的主类上。它同时包含了三个注解:
@EnableAutoConfiguration
:自动装配SpringBoot应用程序所需的Bean。@Configuration
:标识该类为配置类。@ComponentScan
:自动扫描指定的包和类。
示例代码:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@RestController
@RestController
用于创建RESTful风格的Web服务。它等于@Controller
和@ResponseBody
的组合。@Controller
用于标识Controller类,@ResponseBody
表示Controller方法的返回值直接作为响应体返回。
@RestController
public class HelloWorldController {
@GetMapping("/")
public String hello() {
return "Hello, World!";
}
}
@GetMapping
@GetMapping
用于处理HTTP GET请求,它是一个组合注解。
@GetMapping("/hello")
public String hello() {
return "Hello, World!";
}
自定义注解
除了使用SpringBoot提供的注解,我们还可以自定义注解来简化编程过程。自定义注解一般包含元注解和注解属性两部分。
元注解指的是修饰注解的注解,Java中提供了四个元注解:
- @Retention:表示注解的生命周期。有三个取值:
RetentionPolicy.SOURCE
表示注解在源代码中可用,但不会包含在编译好的class文件中;RetentionPolicy.CLASS
表示注解会包含在编译好的class文件中,但不会加载到内存中;RetentionPolicy.RUNTIME
表示注解可以在运行时通过反射获取到。 - @Target:表示注解可以修饰的目标。有多个取值,如
ElementType.TYPE
表示可以修饰类、接口、枚举等;ElementType.FIELD
表示可以修饰属性等。 - @Documented:表示注解是否包含在JavaDoc中。
- @Inherited:表示注解是否可以被子类继承。
注解属性指的是在注解中定义的属性。注解属性可以包含默认值和限制条件。
下面是一个自定义注解示例:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface Service {
String name() default "defaultService";
}
在上面的例子中,@Service
是一个注解,它定义了一个name
属性,且包含元注解。
我们可以在代码中使用自定义注解:
@Service(name = "myService")
public class MyService {
//...
}
综合示例
下面是一个综合示例,它使用了基本注解和自定义注解:
@SpringBootApplication
@Service
public class Application {
public static void main(String[] args) {
ApplicationContext context = SpringApplication.run(Application.class, args);
MyService myService = context.getBean(MyService.class);
myService.sayHello();
}
}
public interface IService {
void sayHello();
}
@Service
public class MyService implements IService {
private final String name;
public MyService(@Value("${app.service.name}") String name) {
this.name = name;
}
@Override
public void sayHello() {
System.out.println("Hello, " + name + "!");
}
}
在上面的例子中,@SpringBootApplication
和@Service
分别标识了Application类和MyService类。在MyService类中,我们使用了@Value
注解来注入属性值,而@Override
注解表示该方法为重写父类方法。
总结
本文介绍了SpringBoot注解的基本知识和自定义注解的使用方法,包含示例代码,通过学习可以对注解有更深入的理解。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:零基础入门学习——Spring Boot注解(一) - Python技术站