Spring框架常用注解(Annotation)收录
Spring框架广泛使用注解来配置和管理Bean,简化了XML配置,提高了开发效率。以下是一些Spring框架中常用的注解:
1. @Component, @Service, @Repository, @Controller
-
用途:这些是组件扫描注解,用于标记Spring应该管理的类。它们本质上都是@Component的特殊化,分别对应于业务服务层、数据访问层、持久层和表现层的类。
@Service public class MyService {// 业务逻辑 }
2. @Autowired
-
用途:自动装配,Spring会自动寻求满足Bean的依赖,通常是通过类型匹配来注入依赖对象。可以用于字段、构造器、setter方法上。
@Service public class MyService {@Autowiredprivate MyRepository repository;// ... }
@Autowired与@Resource异同:
-
@Autowired与@Resource都可以用来装配bean。都可以写在字段上,或写在setter方法上。
-
@Autowired默认按类型装配(属于spring规范),默认情况下必须要求依赖对象必须存在,如果
要允许null 值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我
们想使用名称装配可以结合@Qualifier注解进行使用
- @Resource(属于J2EE复返),默认按照名称进行装配,名称可以通过name属性进行指定。如果
没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称查找,如果注解写在
setter方法上默认取属性名进行装配。 当找不到与名称匹配的bean时才按照类型进行装配。但是
需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。
它们的作用相同都是用注解方式注入对象,但执行顺序不同。@Autowired先byType,@Resource先byName。
3. @Qualifier
-
用途:当有多个相同类型的Bean时,与@Autowired一起使用,指定应该注入哪个具体的Bean。
@Autowired @Qualifier("mySpecialRepository") private MyRepository specialRepository;
4. @Value
-
用途:用于读取属性文件中的值并注入到Bean中,支持SpEL表达式。
-
示例
@Value("${app.name}") private String appName;
5. @Configuration
-
用途:标记一个类作为配置类,可以包含@Bean注解的方法来声明一个或多个Bean。
-
示例
@Configuration public class AppConfig {@Beanpublic MyService myService() {return new MyService();} }
6. @Bean
- 用途:在@Configuration类中声明一个Bean。告诉Spring如何创建一个特定的bean实例。
@Configuration
public class AppConfig {@Beanpublic MyService myService() {return new MyService();}
}
7. @RequestMapping, @GetMapping, @PostMapping, etc.
-
用途:用于处理HTTP请求映射。
@RequestMapping
是一个通用注解,可以用于处理任意类型的HTTP请求,而@GetMapping
,@PostMapping
等是它的特化,分别对应GET、POST等HTTP方法。@RestController @RequestMapping("/api/users") public class UserController {@GetMapping("/{id}")public User getUserById(@PathVariable Long id) {// 处理GET请求}@PostMappingpublic ResponseEntity<User> createUser(@RequestBody User user) {// 处理POST请求} }
8. @Transactional
-
用途:用于指定一个方法或类的事务边界。当方法被调用时,Spring会自动开启和提交或回滚事务。
@Service @Transactional public class MyService {public void updateAndSave(User user) {// 数据操作} }
这些注解极大地简化了Spring应用的开发和配置,使得开发者能够更加专注于业务逻辑的实现。
了解更多知识请戳下:
@Author:懒羊羊