@SpringBootApplication
是SpringBoot应用程序的核心注解,通常用于主类上。它包含了以下三个注解:
@Configuration
:表示该类是一个配置类,用于定义Spring的配置信息。@EnableAutoConfiguration
:表示启用自动配置,SpringBoot会根据项目中的依赖自动配置相应的组件。@ComponentScan
:表示启用组件扫描,SpringBoot会自动扫描当前包及其子包下的所有组件。在主类上添加@SpringBootApplication
注解,然后在main
方法中调用SpringApplication.run()
方法启动应用程序。
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
exclude
用于排除自动配置的类。@RestController
是一个组合注解,用于定义RESTful风格的Web服务。它包含了以下两个注解:
@Controller
:表示该类是一个控制器类,用于处理HTTP请求。@ResponseBody
:表示将方法返回值作为HTTP响应体,而不是视图名称。在控制器类上添加@RestController
注解,然后在方法上添加相应的HTTP请求映射注解,例如:@GetMapping
、@PostMapping
等。
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello!";
}
}
@Controller
注解替换@RestController
。@ResponseBody
,可以将@RestController
替换为@Controller
。@Autowired
用于实现依赖注入。它可以自动装配Bean,默认按类型装配,无需手动创建和管理对象。
在需要注入的字段、构造方法或者Setter方法上添加@Autowired
注解。
@RestController
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/users")
public List getUsers() {
return userService.getUsers();
}
}
@Qualifier
注解指定Bean的名称。@Component
用于定义组件。它表示该类是一个Spring管理的Bean,可以被自动扫描和装配。
在类上添加@Component
注解,然后在需要注入的地方使用@Autowired
注解。
// 定义组件
@Component
public class UserService {
public List<User> getUsers() {
// ...
}
}
// 使用组件
@RestController
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/users")
public List<User> getUsers() {
return userService.getUsers();
}
}
@Component
是一个通用注解,还有一些特定场景的注解,例如:@Repository
、@Service
、@Controller
等,但都是依赖于@Component
。@Component
注解中添加value
属性。@Configuration
是Spring的核心注解之一,用于定义配置类。它表示该类是一个Java配置类,可以用来替代XML配置文件。
在类上添加@Configuration
注解,然后在方法上添加@Bean
注解定义Bean。
@Configuration
public class AppConfig {
@Bean
public UserService userService() {
return new UserService();
}
}
@ComponentScan
、@EnableAutoConfiguration
等注解一起使用。@Import
注解。@Bean
是Spring的核心注解之一,用于定义Bean。它表示该方法返回一个Bean,可以被Spring容器管理。
在配置类的方法上添加@Bean
注解,然后在需要注入的地方使用@Autowired
注解。
@Configuration
public class AppConfig {
@Bean
public UserService userService() {
return new UserService();
}
}
1234567
@Bean
注解中添加name
属性。initMethod
和destroyMethod
属性。@RequestMapping
用于定义HTTP请求映射。它可以将HTTP请求映射到控制器类或方法上。
在控制器类或方法上添加@RequestMapping
注解,然后设置相应的属性,例如:value
、method
、produces
等。
@RestController
@RequestMapping("/users")
public class UserController {
@GetMapping("/{id}")
public User getUser(@PathVariable("id") Long id) {
// ...
}
}
@RequestMapping
是一个通用注解,还有一些特定HTTP方法的注解,例如:@GetMapping
、@PostMapping
、@PutMapping
、@DeleteMapping
等。value
属性中使用数组。@PathVariable
用于获取URL路径中的变量。它可以将URL路径中的变量绑定到方法参数上。
在方法参数上添加@PathVariable
注解,然后设置相应的属性,例如:value
、required
等。
@RestController
@RequestMapping("/users")
public class UserController {
@GetMapping("/info/{id}/{name}")
public User getUser(@PathVariable("id") Long id, @PathVariable("name") String userName) {
// ...
}
}
value
属性。required
属性设置为false
。@RequestParam
是Spring MVC的核心注解之一,用于获取HTTP请求参数。它可以将HTTP请求参数绑定到方法参数上。
在方法参数上添加@RequestParam
注解,然后设置相应的属性,例如:value
、required
、defaultValue
等。
@RestController
@RequestMapping("/users")
public class UserController {
@GetMapping("/search")
public List searchUsers(@RequestParam("keyword") String keyword) {
// ...
}
}
value
属性。required
属性设置为false
。@Value
用于获取配置文件中的属性值。它可以将配置文件中的属性值绑定到字段或方法参数上。
在字段或方法参数上添加@Value
注解,然后设置相应的属性,例如:${property.name}
。
@Component
public class AppConfig {
@Value("${app.name}")
private String appName;
public String getAppName() {
return appName;
}
}
@Value
注解中使用:
分隔符,例如:${property.name:default}
。@Value
注解中使用#{}
,例如:#{'Hello, ' + property.name}
。@ConfigurationProperties
该注解可以直接注入整个类的数据,作用于类
配置文件application.yml
中添加配置
#模拟的类
student:
name: 张三
age: 12
定义配置类StudentInfo
,prefix="student"
的student对应配置文件的student,
@Component
@ConfigurationProperties(prefix="student") // 对应配置文件的student
public class StudentInfo {
String name; // 对应配置文件student下的name
String age; // 对应配置文件student下的age
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public void print() {
System.out.println("name" + name +"age:" + age);
}
}
通过@Autowired使用
@Autowired
private StudentInfo student
/**@student的使用*
@Test
void StudentTest()student.print();