1、bean相关注解
注解名 | 作用 |
---|---|
@Component | 将类交给SpringBoot管理 |
@Repository | 放在dao层 |
@Service | 放在service层,即业务服务层 |
@Controller | 放在控制层,即handler层 |
@RestController | @Response和@Controller的组合注解,返回的是JSON数据 |
@Configuration | 声明一个类为配置类,常和Bean、Scope注解组合使用 |
@SpringBootConfiguration | 标注在类上,说明这个类是SpringBoot的主配置类,SpringBoot要运行这 个类的main方法来启动Spring应用 |
@SpringBootApplication | Spring Boot 的核心注解是@SpringBootApplication,它也是启动类使用的注解 |
@EnableAutoConfiguration | 具有打开自动配置的功能,也可以关闭某个自动配置的选项。 |
@ComponentScan | 用于Spring组件扫描。 |
@Autowired | 由Spring提供,只按照byType自动注入 |
@Resource | 由J2EE提供,默认按照byName自动注入 |
@Bean | 等价于bean标签,一般标注在方法上,默认为单例模式 |
@Scope | 声明该bean的作用域,有singleton、prototype、request、session |
注意:@SpringBootApplication,它也是启动类使用的注解,主要包含了 3 个 注解:
@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan
2、配置启动相关注解
注解名 | 作用 |
---|---|
@SpringBootApplication | Spring Boot 的核心注解是@SpringBootApplication,它也是启动类使用的注解 |
@SpringBootConfiguration | 标注在类上,说明这个类是SpringBoot的主配置类,SpringBoot要运行这 个类的main方法来启动Spring应用 |
@ComponentScan | 用于Spring组件扫描。 |
@EnableAutoConfiguration | 具有打开自动配置的功能,也可以关闭某个自动配置的选项。 |
@Configuration | 声明一个类为配置类,常和Bean、Scope注解组合使用 |
@Conditional | 根据代码中设置的条件装载不同 的 bean,也是SpringBoot实现自动配置的基石。 |
@ConditionOnBean | 配置了某个特定的Bean时条件为真。 |
@ConditionalOnMissingBean | 没有配置特定的Bean时条件为真。 |
3、Http请求相关注解
注解名 | 作用 |
---|---|
@RequestMapping | 映射及请求的路径 |
@GetMapping | 等价于 @RequestMapping(value=“/test”,method=RequestMethod.GET) |
@PostMapping | 等价于 @RequestMapping(value=“/test”,method=RequestMethod.POST) |
@DeleteMapping | Restful风格的删除请求注解 |
注意:@RequestMappping:
1、 value、method value: 指定请求的实际地址,指定的地址可以是URI Template模式; method:指定请求的method类型:(HTTP协议规定)GET、POST、PUT、DELETE、HEAD、OPTIONS、 PATCH等;
2、 consumes、produces consumes:指定接收的处理请求的提交内容类型(Content-Type); produces: 指定返回的内容类型,仅当request请求头中包含该指定类型才返回, Content Type:text/html; charset=UTF-8;
4、参数绑定相关注解
注解名 | 作用 |
---|---|
@RequestParam | 用在方法的参数前面,获取请求中表单类型的key=value格式的数据。 |
@PathVariable | 用于获取请求路径中的参数。 |
@RequestBody | 获取请求 body 中的数据,常用于搭配 @PostMapping 请求来提交对象数据. |
@ResponseBody | 该方法的返回结果直接写入 HTTP response body 中,格式为 json |
@Param | 为SQL语句中参数赋值而服务的,参数名和sql语句不同时使用 |
@Param:
public User selectUser(@Param("userName") String name,@Param("password") String pwd);
@RequestParam:
@RequestParam注解是作用在controller层上的,它可以将前端发送的请求参数绑定到controller层的方法参数上。根据真是业务需求有时方法参数并不需要传递该参数,则可以通过使用该注解来达到这个目的。例如:
@ApiOperation(value = "班级列表")
@GetMapping("/class/list")
public Message.DataRespone<UOrganizationClass> organizationClassList(
//不写required 查看其默认是否为true
@RequestParam(value = "organizationId") Integer organizationId,
int schoolId,
@RequestParam(required = true, defaultValue = "") String className,
@RequestParam(required = false, defaultValue = "") String openYear,
PageVo pageVo) {
SSystemUser systemUser = getUserInfo();
//organizationId = getCanCtrlOrganizationId(organizationId);
//如果没有传organizationId就从token中获取organizationId
if (organizationId == null || "".equals(organizationId)) {
organizationId = systemUser.getOrganizationId();
}
int dataLevel = getUserDataLevel();
PageInfo<UOrganizationClass> result = organizationService.listClass(systemUser.getId(), organizationId, schoolId, dataLevel, className, openYear, pageVo.getPageNumber(), pageVo.getPageCount());
return Message.Success.createWithPageInfo(result);
}
在文件上传时也可以使用。
5、读取配置相关注解
注解名 | 作用 |
---|---|
@Value | 在任意 Spring 管理的 Bean 中通过这个注解获取任何来源配置的属性值 |
@ConfigurationProperties | 类似@Value注解,但这个里面可以自定义前缀等信息 |
@PropertySource | 指定读取自定义的配置文件,参数填写路径。 |
@PropertySource注解:
用于指定资源文件读取的位置,它不仅能读取properties文件,也能读取xml文件,并且通过YAML解析器,配合自定义PropertySourceFactory实现解析YAML文件。spring会使用默认的DefaultPropertySourceFactory解析。
@Configuration
@ComponentScan(basePackages = "propertysourcedemo")
//这次使用file协议的url路径来解析
@PropertySource(value = "file:///D:/spring-high-level-study/src/main/resources/daoconfig/datasource-config.properties")
public class SpringConfig {
//通过SPEL表达式注入属性
@Value("${druid.driverClassName}")
private String driverClassName;
@Value("${druid.url}")
private String url;
@Value("${druid.username}")
private String username;
@Value("${druid.password}")
private String password;
//注册Druid数据源连接池
@Bean
public DruidDataSource druidDataSource(){
System.out.println("driverClassName====> " + driverClassName);
System.out.println("url====> " + url);
System.out.println("username====> " + username);
System.out.println("username====> " + username);
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setDriverClassName(driverClassName);
druidDataSource.setUrl(url);
druidDataSource.setUsername(username);
druidDataSource.setPassword(password);
return druidDataSource;
}
}
6、JSON相关注解
注解名 | 作用 |
---|---|
@RequestBody | 主要用来接收前端传递给后端的json字符串中的数据(请求体中的数据);而最常用的使用请求体传参的无疑是POST请求了,所以使用@RequestBody接收数据时,一般都用POST方式进行提交。在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。 |
@ResponseBody | 返回数据是JSON数据 |
7、校验相关注解
注解名 | 作用 |
---|---|
@NotBlank | 被注释的字符串非 null,并且必须包含一个非空白字符 |
被注释的元素必须是 Email 格式。 | |
@Pattern(regex=,flag=) | 注释的元素必须符合指定的正则表达式 |
@Valid | jdk的注解,数据校验,定义在实体类中的属性上,接口类中的接收数据参数中添加之后实体类会开启一个校验的功能。如果在实体类中嵌套的实体类属性时,必须添加,否则校验无法生效 |
@Validated | spring的注解,比@Valid强大,数据异常会统一抛出异常,方便异常中心统一处理,判断一个输入参数是否合法 |