目录
6. @Resource(name=“name”,type=“type”)
20. @ExceptionHandler(Exception.class)
一、Spring Boot简介
Spring Boot是一个基于Spring框架的开源框架,其目标是简化Spring应用程序的开发过程并提供一种约定优于配置的方式。通过使用注解,Spring Boot可以自动配置和装配许多常见的功能和组件,从而减少了开发人员的工作量。
Spring Boot提供了许多注解,用于简化配置和开发过程。这些注解使开发人员能够以声明式的方式来定义Bean、处理请求、配置依赖等。通过使用这些注解,开发人员可以更加专注于业务逻辑,而不必过多关注框架的配置和细节。
除了上述提到的常用注解外,Spring Boot还提供了许多其他的注解,用于处理缓存、事务、安全、消息队列等方面的功能。这些注解使得开发人员可以轻松地集成和使用这些功能,而无需进行繁琐的配置。
二、核心注解
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan
1.1@SpringBootConfiguration
@SpringBootConfiguration注解是 Spring Boot 的核心注解,能够扫描Spring组件并自动配置Spring Boot,是一个组合注解。
与传统的 Spring 框架中使用的 @Configuration 注解相比,@SpringBootConfiguration注解是 @Configuration 注解的派生注解。这意味着当我们在一个类上使用@SpringBootConfiguration注解时,它实际上等同于同时使用了 @Configuration 注解。
由此可见,@SpringBootConfiguration注解的作用和 @Configuration注解相同,都是标识一个可以被组件扫描器的配置类,只是@SpringBootConfiguration被SpringBoot重新进行了封装命名。
1.2@EnableAutoConfiguration
@EnableAutoConfiguration注解表示开启自动配置功能是SpringBoot框架最重要的注解,也是实现自动化配置的注解,具有非入侵性。
1.3@ComponentScan
@ComponentScan注解是一个组件包扫描器,用于将指定包中的注解类自动装配到Spring的Bean容器中。@ComponentScan注解具体扫描的包 根路径由SpringBoot项目主程序启动类所在包的位置决定,在扫描过程中由@AutoConfigurationPackage注解进行解析,从而得到SpringBoot项目主程序启动类所在的具体位置。
三、常用注解
1.@Configuration
等同于spring的XML配置文件,使用Java代码可以检查类型安全。指出该类是 Bean 配置的信息源,相当于XML中的
<beans></beans>
,一般加在主类上。如果有些第三方库需要用到xml文件,建议仍然通过@Configuration类作为项目的配置主类——可以使用@ImportResource注解加载xml配置文件。
2. @Bean
相当于XML中的
<bean></bean>
,放在方法的上面,而不是类,意思是产生一个bean,并交给spring管理;
3. @Import
用于导入一个配置类或配置类数组。可以在类上使用该注解。
3.1导入单个配置类
@Configuration
@Import(OtherConfig.class)
public class AppConfig {
// ...
}
3.2导入多个配置类:
@Configuration
@Import({Config1.class, Config2.class})
public class AppConfig {
// ...
}
3.3导入带有选择性条件的配置类:
@Configuration
@Import(value = {Config1.class, Config2.class}, condition = MyCondition.class)
public class AppConfig {
// ...
}
4. @ImportResource
用于导入一个 XML 配置文件。可以在类上使用该注解。
5. @Autowired
自动导入依赖的bean,自动导入依赖的bean。byType方式。把配置好的Bean拿来用,完成属性、方法的组装,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。当加上(required=false)时,就算找不到bean也不报错;
6. @Resource(name=“name”,type=“type”)
没有括号内内容的话,默认byName,与@Autowired干类似的事;
7. @Inject
等价于默认的@Autowired,只是没有required属性;
8.@Component
泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注;
9. @Controller
用于定义控制器类,在spring项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层),一般这个注解在类中,通常方法需要配合注解@RequestMapping;
10. @RestController
用于标注控制层组件(如struts中的action),是@ResponseBody和@Controller的合集;
11. @Service
一般用于修饰service层的组件;
12. @Repository
用于标注数据访问组件,即DAO组件;
13. @RequestMapping
用来处理请求地址映射的注解;提供路由信息,负责URL到Controller中的具体函数的映射,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
14. @ResponseBody
表示该方法的返回结果直接写入HTTP response body中,一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@responsebody后,会直接返回json数据。
15. @Value
注入 application.properties 或 application.yml 配置的属性的值;该注解用于从配置文件中读取属性值。通过该注解,我们可以将一些不变的属性值,如数据库连接信息、端口号等,放在配置文件中,方便后续修改和管理。
@Component
public class MyComponent {
@Value("${my.property}")
private String myProperty;
// ...
}
16. @PathVariable
路径变量,参数与大括号里的名字一样要相同;
17. @Profiles
Spring Profiles 提供了一种隔离应用程序配置的方式,并让这些配置只能在特定的环境下生效。任何@Component或@Configuration都能被@Profile标记,从而限制加载它的时机;
18. @ConfigurationProperties
批量注入配置文件中的属性,Spring Boot将尝试校验外部的配置,默认使用JSR-303(如果在classpath路径中)。可以为@ConfigurationProperties 类添加JSR-303 javax.validation约束注解;
19. @ControllerAdvice
包含@Component,可以被扫描到,统一处理异常;
20. @ExceptionHandler(Exception.class)
用在方法上面,表示遇到这个异常就执行以下方法;