Spring 的常见注解
| 注解 | 说明 |
| @Component、@Controller、@Service、@Repository | 使用在类上用于实例化Bean(标记一个类为 Spring 组件。) |
| @Autowired | 使用在字段上,根据'类型'依赖注入 |
| @Qualifier | 结合@Autowired,用于根据'名称'依赖注入(指定要注入的 Bean 的名称,解决多个同类型 Bean 的冲突。) |
| @Scope | 标注Bean的作用范围 |
| @Configuration | 指定当前类是一个Spring配置类,当创建容器时会从该类上加载注解 |
| @ConponentScan | 指定初始化容器时要扫描的包 |
| @Bean | 使用在方法上,标注该方法返回值存储到Spring容器中 |
| @Import | 使用@Import导入的类会被加载到IOC容器中 |
| @Aspect、@Before、@After、@Around、@Pointcut | 用于切面编程(AOP) |
Spring MVC 的常见注解
| 注解 | 说明 |
| @RequestMapping | 用于映射请求路径,可以定义在类上和方法上。用于类上,则表示类中的所有的方法都是以该地址作为父路径 |
| @RequestBody | 将请求体绑定到方法参数,接收 http 请求的 json 数据,将 json 转换为 java 对象 |
| @RequestParam | 指定请求参数的名称 |
| @PathViriable | 从请求路径下中获取请求参数 (/user/{id}) ,传递给方法的形式参数 |
| @ResponseBody | 实现将 controller 方法返回值转化为 json 对象响应给客户端 |
| @RequestHeader | 获取指定的请求头数据 |
| @RestController |
组合了 |
Spring Boot 的常见注解
| 注解 | 说明 |
| @SpringBootApplication | 标记 Spring Boot 应用程序的主类。 |
| @SpringBootConfiguration | 与 @Configuration 注解作用相同,用来声明当前也是一个配置类。 |
| @ComponentScan | 组件扫描,默认扫描当前引导类所在包及其子包 |
| @EnableAutoConfiguration |
启用 Spring Boot 的自动配置机制,自动配置应用程序所需的 Bean。 |
@Component和@Configuration有什么区别
-
@Component:用于标记普通的组件类,适用于业务逻辑组件。 -
@Configuration:用于标记配置类,适用于显式定义和配置 Bean。 - 关键区别:
@Configuration会被 CGLIB 代理,确保@Bean方法返回单例 Bean,而@Component不会触发代理机制。
@Component和@Bean有什么区别
-
@Component:用于标记普通的组件类,适用于业务逻辑组件。 -
@Bean:用于显式定义 Bean,适用于需要自定义 Bean 创建逻辑的场景。 - 关键区别:
@Component是类级别注解,由 Spring 容器自动创建 Bean;@Bean是方法级别注解,可以在方法中自定义 Bean 的创建逻辑。
一般情况下@Bean和@Configuration搭配使用,但也可以和@Component结合使用。例如,在 @Component 类中定义 @Bean 方法,但这种方式不会触发 @Configuration 的代理机制。
@Component
public class MyComponent {
@Bean
public MyBean myBean() {
return new MyBean();
}
}
在这种情况下,myBean() 方法不会被代理,每次调用都会返回一个新的实例。
@Required注解有什么用
@Required 是 Spring 框架中的一个注解,用于标记 Bean 的某个属性(通常是依赖注入的属性)是必须的。如果标记了 @Required 的属性没有被注入值,Spring 容器在初始化 Bean 时会抛出 BeanInitializationException 异常。
@Required只能用于 setter 方法,不能用于字段或构造方法。- 如果使用
@Autowired注解,且required=true(默认值),则不需要再使用@Required,因为@Autowired已经确保了依赖必须存在。 - 在 Spring 5.1 之后,
@Required逐渐被@Autowired(required=true)取代,因为后者更加灵活且功能更强大。
@RequestMapping注解有什么用?
- 将 HTTP 请求映射到控制器中的处理方法。
- 定义请求的 URL 路径、HTTP 方法、请求参数、请求头等条件。
- 支持 RESTful 风格的 URL 设计。
- 用在类级别:定义控制器的基础 URL 路径。
- 用在方法级别:定义具体处理请求的方法和路径。
@RequestParam和@PathVariable有什么区别?
-
@RequestParam:用于从 URL 查询参数中提取值,适用于 GET 请求中的查询参数。
@GetMapping("/users/{id}")
public String getUserById(@PathVariable("id") Long id) {
return "User ID: " + id;
}
//请求:GET /users?id=123
//输出:User ID: 123
-
@PathVariable:用于从 URL 路径中提取值,适用于 RESTful 风格的 URL。
@GetMapping("/users/{id}")
public String getUserById(@PathVariable("id") Long id) {
return "User ID: " + id;
}
//请求:GET /users/123
//输出:User ID: 123
- 两者可以结合使用,以满足更复杂的业务需求。
1万+

被折叠的 条评论
为什么被折叠?



