主页 > IT业界  > 

面基SpringBoot项目中实用注解一

面基SpringBoot项目中实用注解一

在Spring Boot项目中,实用注解根据功能可以分为多个类别。以下是常见的注解分类、示例说明及对比分析:


1. 核心配置注解 @SpringBootApplication

作用:标记主启动类,组合了@Configuration、@EnableAutoConfiguration和@ComponentScan。 它用于标识Spring Boot应用程序的入口类,可以简化Spring应用程序的配置和启动过程。

示例: 例子中,@SpringBootApplication注解被用于MyApplication类上,标识了这个类是Spring Boot应用程序的入口。

@SpringBootApplication public class MyApp { public static void main(String[] args) { SpringApplication.run(MyApp.class, args); } }

对比:相比手动组合多个注解,@SpringBootApplication简化了启动类配置。


2. 依赖注入与Bean管理 @Autowired

作用:自动注入Bean,默认按类型匹配。

示例:

@Service public class UserService { @Autowired private UserRepository userRepository; }

对比:与@Resource(按名称注入)相比,@Autowired更灵活,支持@Qualifier细化匹配。(后期补充 @Qualifier 实用细节,未完成。。)

@Component vs @Service vs @Repository

共同点:均用于声明Bean。

区别:

@Component:通用注解。

@Service:标记业务层,强调事务性。

@Repository:标记数据层,自动转换数据访问异常。

示例:

@Repository public class UserRepositoryImpl implements UserRepository {}


3. Web MVC注解 @RestController vs @Controller

@RestController:组合了@Controller和@ResponseBody,直接返回JSON。 

与@Controller类似,但@RestController会自动将返回值转换为JSON格式。它用于标注一个类,表示这个类是一个RESTful风格的控制器,可以处理HTTP请求并返回JSON/XML格式的响应。

@Controller:需配合@ResponseBody返回数据。

示例:

@RestController public class UserController { @GetMapping("/users") public List<User> getUsers() { return userService.findAll(); } }

     在这个例子中,@RestController注解被用于UserController类上,使得这个类成为了一个RESTful风格的控制器。@RequestMapping注解用于指定请求URL和处理方法之间的关系。

@GetMapping vs @RequestMapping

@GetMapping:简化版@RequestMapping(method = RequestMethod.GET)。    @RequestMapping用于映射请求URL和处理方法。它是Spring MVC框架中的一个核心注解,可以用于类级别和方法级别,指定请求URL和HTTP方法(GET、POST、PUT、DELETE等)。@GetMapping、@PostMapping等是@RequestMapping的派生注解,用于简化特定HTTP方法的映射。

示例:

@GetMapping("/user/{id}") public User getUser(@PathVariable Long id) { ... }

示例二:

@RestController @RequestMapping("/api") public class UserController { @GetMapping("/users") public List<User> getUsers() { // 获取用户列表 } @PostMapping("/users") public void createUser(@RequestBody User user) { // 创建新用户 } }

在这个例子中,@GetMapping和@PostMapping注解分别用于映射HTTP GET和POST请求到对应的方法上。


4. 数据访问与事务 @Entity & @Table

作用:JPA实体映射。

示例:

@Entity @Table(name = "users") public class User { ... }

@Transactional

作用:声明式事务管理。

对比:与编程式事务(手动管理)相比,代码更简洁。

示例:

@Transactional public void updateUser(User user) { userRepository.save(user); }


5. 配置与属性绑定 @ConfigurationProperties

作用:将配置文件属性绑定到Bean。

对比:比@Value更高效,支持批量注入。

示例:

@ConfigurationProperties(prefix = "datasource") public class DataSourceConfig { private String url; private String username; // getters & setters }


6. 切面编程(AOP) @Aspect & @Around

作用:定义切面和环绕通知。

示例:

@Aspect @Component public class LoggingAspect { @Around("execution(* com.example.service.*.*(..))") public Object logMethod(ProceedingJoinPoint joinPoint) throws Throwable { // 记录日志逻辑 return joinPoint.proceed(); } }


7. 测试相关 @SpringBootTest vs @WebMvcTest

@SpringBootTest:全量集成测试,加载完整上下文。

@WebMvcTest:仅加载Web层上下文,轻量级。

示例:

@SpringBootTest class UserServiceIntegrationTest { ... } @WebMvcTest(UserController.class) class UserControllerTest { ... }


对比总结 注解典型场景替代方案优势@SpringBootApplication主启动类配置手动组合多个注解简化配置,减少冗余代码@RestController返回JSON的控制器@Controller + @ResponseBody代码更简洁@Autowired依赖注入XML配置或@Resource按类型自动匹配,灵活@Transactional声明式事务编程式事务(如TransactionTemplate)代码侵入性低,易于维护@GetMapping定义GET请求路由@RequestMapping(method=GET)可读性更高,语法简洁
总结

Spring Boot注解通过约定大于配置的理念,显著简化了开发。合理选择注解(如用@RestController替代传统@Controller)能提升代码可读性和维护性,而对比不同注解(如@Autowired与@Resource)有助于理解Spring的设计哲学。实际开发中应根据场景选择最合适的注解。

注意:

        spring项目常用注解-URL: 地基spring注解部分一-CSDN博客

(抱歉,最近在面试,粗糙了些。)

(望各位潘安、各位子健/各位彦祖、于晏不吝赐教!多多指正!🙏)

标签:

面基SpringBoot项目中实用注解一由讯客互联IT业界栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“面基SpringBoot项目中实用注解一