本文主要总结了Spring中常用、常见的注解,针对每一个注释都阐述了具体的用法,希望对你有所帮助
@SpringBootApplication
这个注解算是Spring Boot项目的基石,所以单独拎出来说一下,其在创建SpringBoot项目以后会默认在主类上加上。
@SpringBootApplicationpublic class SpringSecurityJwtGuideApplication { public static void main(java.lang.String[] args) { SpringApplication.run(SpringSecurityJwtGuideApplication.class, args); }}
其可以看做@Configuration、@EnableAutoConfiguration、@ComponentScan注解的集合,其这三个注解的作用分别如下所示
- @EnableAutoConfiguration:启动SpringBoot的自动装配机制
- @ComponentScan:扫描被@Component(@Service、@Controller)注解的bean,注解默认会扫描该类所在包下所有的类
- @Configuration:运行在Spring上下文中注册额外的bean或导入其他配置类
Spring Bean 相关
@Autowired
自动导入对象到类中,被注入进的类ton光要被Spring管理,比如Service类注入到Controller类中
@Servicepublic class TestService{ ......}@RestController@RequestMapping("/users")public class TestController{ @Autowired private TestService testService;}
@Qualifier
当有多个同一类型的Bean时,可以使用@Qualifier("name")来指定。与@Autowired配合使用。其是根据名称进行注入,而@Autowired根据类型注入。
@Component,@Repository,@Service,@Controller
我们一般使用@Autowired注解让Spring容器帮我们自动装配bean 。要想把类标识成可用于@Autowired注解自动装配的bean类,可以采用以下注解实现
- @Component:通用注解,可标注任意类为Spring组件。如果一个Bean不知道属于哪个层,可以使用@Component注解标注
- @Repository:对应持久层(Dao)主要用于数据库相关操作
- @Service:对应服务层,主要涉及一些复杂的逻辑,需要用到Dao层
- @Controller:对应SpringMVC控制层、主要用于接收用户请求并调用Service层返回数据给前端页面。
@RestController
@RestController注解是@Controller和@ResponseBody的合集,表示这是个控制器bean,并且是将函数的返回值直接填入HTTP响应体中,是REST风格的控制器
单独使用@Controller不加@ResponseBody的话一般使用在要返回一个视图的情况,这种情况属于比较传统的Spring MVC的应用,对应前后端不分离的情况。@Controller+@ResponseBody返回JSON或
@Scope
声明Spring Bean的作用域
@Bean@Scope("singleton")public Person personSingleton(){ return new Person();}
常见的Bean的作用域
- singleton:单例,唯一Bean实例
- prototype:每次请求都会创建一个新的bean实例
- request:每一次HTTP请求都会产生一个新的bean,该bean仅在当前HTTP request内有效
- session:每一次HTTP请求都会产生一个新的Bean,该bean仅在当前HTTP session内有效
@Configuration
一般用来声明配置类,可以使用@Component注解代替,不过使用@Configuration注解声明配置类更加语义化
@Configurationpublic class AppConfig{ @Bean public TransferService transferService(){ return new TransferServiceImpl(); }}
处理常见的HTTP请求类型
五种常见的请求类型
- GET:请求从服务器获取特定资源
- POST:在服务器上创建一个新的资源
- PUT:更新服务器上的资源(客户端提供更新后的整个资源)
- DELETE:从服务器上删除特定的资源
- PATCH:更新服务器上的资源(客户端提供更改的属性,可以看做是部分更新)
GET请求
@GetMapping("users")等价于@RequestMapping(value="/users",method=RequestMethod.GET)
POST请求
@PostMapping("users") 等价于@RequestMapping(value="/users",method=RequestMethod.POST)
PUT请求
@PutMapping("/users/{userId}") 等价于@RequestMapping(value="/users/{userId}",method=RequestMethod.PUT)
DELETE请求
@DeleteMapping("/users/{userId}")等价于@RequestMapping(value="/users/{userId}",method=RequestMethod.DELETE)
PATCH请求
一般实际项目中,都是PUT不够用了采用PATCH请求去更新数据
前后端传值
@pathVariable和@RequestParam
@PathVariable用于获取路径参数
@RequestParam用户获取查询参数
@GetMapping("/user/{userId}/age")public String getUserIdAge( @PathVariable("userId") String useid, @RequestParam(value="type",required = false) String type){ }
如果我们请求的url是:/user/{123456}/age?type=web
那么我们服务器端得到的数据就是:userid=123456;type=web
@RequestBody
用于读取 Request 请求(可能是 POST,PUT,DELETE,GET 请求)的 body 部分并且Content-Type 为 application/json 格式的数据,接收到数据之后会自动将数据绑定到 Java 对象上去。系统会使用HttpMessageConverter或者自定义的HttpMessageConverter将请求的 body 中的 json 字符串转换为 java 对象。
读取配置信息
有些时候我们需要将一些常用的配置信息放到配置文件中,在具体使用的过程中我们需要从配置文件中读取这些数据。其中Spring就给我们提供了几种不错的读取配置信息的方法
例如常见的yml文件
zhonghu:关注java冢狐。my-profile: name:java冢狐 age:18 user: location:中国 books: -name:三国演义 description:魏蜀吴 -name:西游记 description:师徒四人
@value
使用@value("${property}")读取比较简单的配置信息
@Value("${zhonghu}")String zhonghu;
@ConfigurationProperties
通过@ConfigurationProperties读取配置信息并与bean绑定
@Component@ConfigurationProperties(prefix ="user")class User{}
可以像使用普通的Spring Bean一样,将其注入到类中使用。
@PropertySource
主要用于读取指定的properties文件
参数校验
参数校验在我们编程中的重要性不言而喻,即使在前端对数据进行校验的情况下,我们还是要对传入后端的数据再进行一次校验,避免用户饶过浏览器直接通过HTTP工具直接向后端请求一些违法数据。
JSR是一套JavaBean参数校验的标准,其定义了很多常用的校验注解。
一些常用的字段验证的注解
@NotEmpty
被注释的字符串的不能为 null 也不能为空@NotBlank
被注释的字符串非 null,并且必须包含一个非空白字符@Null
被注释的元素必须为 null@NotNull
被注释的元素必须不为 null@AssertTrue
被注释的元素必须为 true@AssertFalse
被注释的元素必须为 false@Pattern(regex=,flag=)
被注释的元素必须符合指定的正则表达式@Email
被注释的元素必须是 Email 格式。@Min(value)
被注释的元素必须是一个数字,其值必须大于等于指定的最小值@Max(value)
被注释的元素必须是一个数字,其值必须小于等于指定的最大值@DecimalMin(value)
被注释的元素必须是一个数字,其值必须大于等于指定的最小值@DecimalMax(value)
被注释的元素必须是一个数字,其值必须小于等于指定的最大值@Size(max=, min=)
被注释的元素的大小必须在指定的范围内@Digits (integer, fraction)
被注释的元素必须是一个数字,其值必须在可接受的范围内@Past
被注释的元素必须是一个过去的日期@Future
被注释的元素必须是一个将来的日期
JPA相关
创建表
@Entity:声明一个类对应一个数据库实力
@Table:设置表名
创建主键
@Id:声明一个字段为主键
使用@Id声明以后,我们还可以定义主键的生成策略,使用@GenerateValue指定主键生成策略
设置字段类型
@Column:声明字段
// 设置属性userName对应的数据库字段名为user_name,长度为32,非空@Column(name = "user_name",nullable = false,length=32)private String userName;// 设置字段类型并且加默认值@Column(columnDefinition = "tinyint(1) default 1")private Boolean enabled;
指定不持久化特定字段
@Transient:声明不需要与数据库映射的字段,在保存的时候不需要保存进数据库。
声明大字段
@Lob:声明某个字段为大字段
关联关系
- @OneToOne 声明一对一关系
- @OneToMany 声明一对多关系
- @ManyToOne声明多对一关系
- @MangToMang声明多对多关系
全局异常处理
- @ControllerAdvice:包含@Component。可以被扫描到。统一处理异常。
- @ExceptionHandler(Exception.class):用在方法上面表示遇到这个异常就执行以下方法。
最后
- 如果觉得看完有收获,希望能给我点个赞,这将会是我更新的最大动力,感谢各位的支持
- 欢迎各位关注我的公众号【java冢狐】,专注于java和计算机基础知识,保证让你看完有所收获,不信你打我
- 如果看完有不同的意见或者建议,欢迎多多评论一起交流。感谢各位的支持以及厚爱。
——我是冢狐,和你一样热爱编程。
欢迎关注公众号"Java冢狐"获取最新消息
原文转载:http://www.shaoqun.com/a/508773.html
naver:https://www.ikjzd.com/w/1727
虚拟信用卡:https://www.ikjzd.com/w/1055
本文主要总结了Spring中常用、常见的注解,针对每一个注释都阐述了具体的用法,希望对你有所帮助@SpringBootApplication这个注解算是SpringBoot项目的基石,所以单独拎出来说一下,其在创建SpringBoot项目以后会默认在主类上加上。@SpringBootApplicationpublicclassSpringSecurityJwtGuideApplication{pu
智邦:智邦
cb体系:cb体系
去一探究竟吧!中国十大趣泉(全文):去一探究竟吧!中国十大趣泉(全文)
双面澳门 暑期里的混搭时光:双面澳门 暑期里的混搭时光
2020五一厦门去哪里玩?五一厦门有哪些免费的景点?:2020五一厦门去哪里玩?五一厦门有哪些免费的景点?
No comments:
Post a Comment