Java springboot里注解大全和使用指南(最新整理)
作者:奋力向前123
在Java Spring Boot中,注解是简化开发、提高效率的关键工具,这篇文章给大家介绍Java springboot里注解大全和使用指南,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
在 Java Spring Boot 中,注解是简化开发、提高效率的关键工具。以下是一些核心注解及其使用指南,按功能分类整理:
一、核心启动与配置注解
- @SpringBootApplication
- 作用:Spring Boot 应用的核心注解,用于标记主启动类。它是一个组合注解,等价于同时使用
@Configuration、@EnableAutoConfiguration和@ComponentScan。 - 使用场景:必须添加在 Spring Boot 应用的主启动类上,是应用启动的必要条件。
- 作用:Spring Boot 应用的核心注解,用于标记主启动类。它是一个组合注解,等价于同时使用
- 示例:
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
@Configuration
- 作用:声明当前类是一个配置类,相当于 Spring 的 XML 配置文件。
- 使用场景:用于定义和配置 Bean,通常配合
@Bean注解一起使用。 - 示例:
@Configuration
public class AppConfig {
@Bean
public DataSource dataSource() {
// 配置并返回一个数据源 Bean
return new HikariDataSource();
}
}
- @EnableAutoConfiguration
- 作用:启用 Spring Boot 的自动配置机制,根据类路径和配置文件中的信息自动配置 Spring 应用。
- 使用场景:通常与
@SpringBootApplication一起使用,无需单独使用。
- @ComponentScan
- 作用:自动扫描指定包及其子包下的组件(如
@Component、@Service、@Repository、@Controller等),并将它们注册为 Spring Bean。 - 使用场景:通常与
@SpringBootApplication一起使用,无需单独使用。若需自定义组件扫描范围,可通过basePackages属性指定。
- 作用:自动扫描指定包及其子包下的组件(如
- 示例:
@SpringBootApplication(scanBasePackages = "com.example.demo")
public class DemoApplication {
// ...
}
二、组件注册注解
- @Component
- 作用:通用的组件注解,用于标记任何类为 Spring 的组件。Spring 会自动扫描并创建该类的实例。
- 使用场景:当组件不属于
Controller、Service、Repository等特定层级时使用。
- 示例:
@Component
public class ToolUtil {
public String formatStr(String str) {
return str.trim().toUpperCase();
}
}
@Service
- 作用:标记业务逻辑层(Service 层)的组件,是
@Component的特化版本,语义更加明确。 - 使用场景:用于封装核心业务逻辑。
- 示例:
@Service
public class UserService {
public User getUserById(Integer id) {
// 实际场景中会调用 Repository 层查询数据库
User user = new User();
user.setId(id);
user.setName("李四");
return user;
}
}
@Repository
- 作用:标记数据访问层(DAO 层)的组件,是
@Component的特化版本。除了将类注册为 Bean 外,它还额外提供了持久化异常转换的功能。 - 使用场景:用于封装数据访问逻辑,与数据库交互。
- 示例:
@Repository
public interface UserRepository extends JpaRepository<User, Integer> {
User findByName(String name);
}
@Controller
- 作用:标记控制层组件,用于接收 HTTP 请求并返回视图或数据。
- 使用场景:Web 层控制器类,处理用户请求(如页面跳转、表单提交等)。
- 示例:
@Controller
@RequestMapping("/user")
public class UserController {
@GetMapping("/info")
public String userInfo(Model model) {
model.addAttribute("username", "张三");
return "user-info"; // 返回视图名
}
}
@RestController
- 作用:组合注解,相当于
@Controller+@ResponseBody。用于构建 RESTful API,返回 JSON/XML 等数据格式,而非视图。 - 使用场景:前后端分离项目的接口层,提供 RESTful API(如移动端接口、前端 AJAX 请求接口)。
- 示例:
@RestController
@RequestMapping("/api/user")
public class UserRestController {
@GetMapping("/info")
public User getUserInfo() {
User user = new User();
user.setId(1);
user.setName("张三");
return user; // 直接返回 User 对象,会自动转为 JSON
}
}
三、依赖注入注解
- @Autowired
- 作用:自动注入依赖的 Bean,Spring 会在 IoC 容器中查找匹配类型的 Bean 并注入到目标字段、构造方法或 setter 方法中。
- 使用场景:需要注入其他 Bean 依赖时(如 Service 层注入 Repository 层、Controller 层注入 Service 层)。
- 示例:
@RestController
public class UserRestController {
private final UserService userService;
@Autowired
public UserRestController(UserService userService) {
this.userService = userService;
}
@GetMapping("/info")
public User getUserInfo() {
return userService.getUserById(1);
}
}@Qualifier
- 作用:与
@Autowired一起使用,用于指定要注入的 Bean 的名称。当存在多个相同类型的 Bean 时,可以使用@Qualifier来指定注入哪一个。 - 使用场景:解决相同类型 Bean 的歧义性注入问题。
- 示例:
@RestController
public class UserRestController {
private final UserService userService;
@Autowired
@Qualifier("userServiceImpl") // 指定注入的 Bean 名称
public UserRestController(UserService userService) {
this.userService = userService;
}
// ...
}@Value
- 作用:注入配置文件中的值,可以注入
String、int、long、double、boolean等类型。 - 使用场景:从配置文件中读取配置值并注入到 Bean 的属性中。
- 示例:
@Component
public class AppConfig {
@Value("${server.port}")
private int port;
// ...
}
四、Web 开发注解
- @RequestMapping
- 作用:映射 HTTP 请求到处理方法,可以用于类和方法上。用于指定请求 URL 和 HTTP 方法(GET、POST、PUT、DELETE 等)。
- 使用场景:处理 Web 请求,将请求映射到具体的处理方法上。
- 示例:
@RestController
@RequestMapping("/api/user")
public class UserRestController {
@GetMapping("/info")
public User getUserInfo() {
// ...
}
@PostMapping("/create")
public User createUser(@RequestBody User user) {
// ...
}
}@GetMapping、@PostMapping、@PutMapping、@DeleteMapping
- 作用:分别用于映射 HTTP GET、POST、PUT、DELETE 请求到处理方法上。它们是
@RequestMapping的特化,分别对应不同的 HTTP 请求方法。 - 使用场景:简化 RESTful API 的开发,直接对应 HTTP 方法。
- 示例:
@RestController
@RequestMapping("/api/user")
public class UserRestController {
@GetMapping("/info")
public User getUserInfo() {
// ...
}
@PostMapping("/create")
public User createUser(@RequestBody User user) {
// ...
}
}@RequestParam
- 作用:用于将请求参数绑定到 Controller 方法的参数上。
- 使用场景:获取 URL 查询参数或表单提交的参数。
- 示例:
@GetMapping("/search")
public List<User> searchUsers(@RequestParam String name, @RequestParam(defaultValue = "10") int size) {
// ...
}
@PathVariable
- 作用:用于获取请求路径中的参数,通常用于 RESTful 风格的 API 上。
- 使用场景:从 URL 路径中提取参数值。
- 示例:
@GetMapping("/user/{id}")
public User getUserById(@PathVariable Long id) {
// ...
}
@RequestBody
- 作用:用于接收请求体中的 JSON 数据,并将其绑定到 Controller 方法的参数上。
- 使用场景:处理 POST、PUT 等请求中的 JSON 数据。
- 示例:
@PostMapping("/create")
public User createUser(@RequestBody User user) {
// ...
}
@ResponseBody
- 作用:表示该方法的返回结果直接写入 HTTP 响应体中,返回数据的格式为
application/json。通常与@Controller一起使用,若使用@RestController则无需使用此注解。 - 使用场景:返回 JSON/XML 等数据格式,而非视图。
- 示例:
@Controller
public class UserController {
@GetMapping("/info")
@ResponseBody
public User getUserInfo() {
User user = new User();
user.setId(1);
user.setName("张三");
return user;
}
}到此这篇关于Java springboot里注解大全和使用指南(最新整理)的文章就介绍到这了,更多相关 springboot注解使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
