Spring boot与Web的常用注解介绍:

        Web常用注解和Spring Boot并不完全一样,但Spring Boot中也包含了一些常用的Web注解。一些常见的Web注解包括:
         @Controller:

                用于标识一个类是Spring MVC控制器。

         @RequestMapping:

                 用于映射HTTP请求到控制器的处理方法。

         @RequestParam:

                用于获取请求参数的值。

         @ResponseBody: 

                用于将方法返回的对象转换为HTTP响应的内容。

         @PathVariable:

                用于获取RESTful风格的URL中的参数值。 

  1. @RestController 和 @RequestMapping 注解

    MyApplication 类上的第一个注解是 @RestController 。 这被称为 stereotype 注解。 它为阅读代码的人和Spring提供了提示,说明这个类扮演了一个特定的角色。 在本例中,我们的类是一个web @Controller ,所以Spring考虑使用它来处理客户端的web请求。

    @RequestMapping 注解提供了 “routing” (路由)信息。 它告诉Spring,任何带有 / 路径的HTTP请求都应该被映射到 home 方法。 @RestController 注解告诉Spring将返回的结果字符串直接响应给客户端。

  2. @SpringBootApplication 注解

    @SpringBootApplication。这个注解被称为元注解,它结了 @SpringBootConfiguration@EnableAutoConfiguration 和 @ComponentScan

    SpringBoot程序启动入口一个是SpringApplication.run,一个是@SpringBootApplication注解,这个注解是由三部分组成:

    1. @ComponentScan注解icon-default.png?t=N7T8http://www.51gjie.com/javaweb/1044.html,主要用于组件扫描和自动装配。

    2. @SpringBootConfiguration注解,这个注解主要是继承@Configuration注解icon-default.png?t=N7T8http://www.51gjie.com/javaweb/1045.html,主要用于加载配置文件。

    3. @EnableAutoConfiguration注解icon-default.png?t=N7T8http://www.51gjie.com/javaweb/1046.html,这个注释启用了Spring Boot的自动配置功能,可以自动为您配置很多东西。@SpringBootApplication = @Configuration + @ComponentScan + @EnableAutoConfiguration,是这三个Spring注释的组合,只需一行代码即可提供所有三个注释的功能。SpringBootApplication注解 (51gjie.com)icon-default.png?t=N7T8http://www.51gjie.com/javaweb/1043.html

  3. Spring ComponentScan注解详解

    Spring中@ComponentScan注解的作用就是根据定义的扫描路径,把符合扫描规则的类装配到spring的bean容器中。

    总结

    Spring ComponentScan注解有以下特性:

    1. 自定扫描路径下边带有@Controller,@Service,@Repository,@Component注解加入spring容器

    2. 通过includeFilters加入扫描路径下没有以上注解的类加入spring容器

    3. 通过excludeFilters过滤出不用加入spring容器的类

    4. 自定义增加了@Component注解的注解方式Spring ComponentScan注解详解 (51gjie.com)icon-default.png?t=N7T8http://www.51gjie.com/javaweb/1044.html

  4. SpringBootConfiguration注解

    SpringBootConfiguration是SpringBoot项目的配置注解,这也是一个组合注解,SpringBootConfiguration注解可以用java代码的形式实现spring中xml配置文件配置的效果,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中,并且实例名就是方法名。SpringBoot项目中推荐使用@SpringBootConfiguration替代@ConfigurationSpringBootConfiguration注解 (51gjie.com)icon-default.png?t=N7T8http://www.51gjie.com/javaweb/1045.html

  5. EnableAutoConfiguration注解

    EnableAutoConfiguration是SpringBoot的一个特性,可以根据classpath中的jar依赖,自动注册bean,一般用于类或接口上,它尝试根据您添加的jar依赖项自动配置Spring应用程序。

    @EnableAutoConfiguration实现的关键在于引入了AutoConfigurationImportSelector,其核心逻辑为selectImports方法,借助AutoConfigurationImportSelector,它可以帮助SpringBoot应用将所有符合条件的@Configuration配置都加载到当前SpringBoot创建并使用的IoC容器。

    原理

    当springboot扫描到@EnableAutoConfiguration注解时,则会将spring-boot-autoconfigure.jar/META-INF/spring.factories文件中org.springframework.boot.autoconfigure.EnableAutoConfiguration对应的value里的所有xxxConfiguration类加载到IOC容器中。spring.factories文件里每一个xxxAutoConfiguration文件一般都会有下面的条件注解:

    @ConditionalOnClass : classpath中存在该类时起效

    @ConditionalOnMissingClass : classpath中不存在该类时起效

    @ConditionalOnBean : DI容器中存在该类型Bean时起效

    @ConditionalOnMissingBean : DI容器中不存在该类型Bean时起效

    @ConditionalOnSingleCandidate : DI容器中该类型Bean只有一个或@Primary的只有一个时起效

    @ConditionalOnExpression : SpEL表达式结果为true时

    @ConditionalOnProperty : 参数设置或者值一致时起效

    @ConditionalOnResource : 指定的文件存在时起效

    @ConditionalOnJndi : 指定的JNDI存在时起效

    @ConditionalOnJava : 指定的Java版本存在时起效

    @ConditionalOnWebApplication : Web应用环境下起效

    @ConditionalOnNotWebApplication : 非Web应用环境下起效

    SpringBoot中EnableAutoConfiguration实现的关键在于引入了AutoConfigurationImportSelector,其核心逻辑为selectImports方法,逻辑大致如下:

    1. 从配置文件META-INF/spring.factories加载所有可能用到的自动配置类;

    2. 去重,并将exclude和excludeName属性携带的类排除;

    3. 过滤,将满足条件(@Conditional)的自动配置类返回;EnableAutoConfiguration注解 (51gjie.com)icon-default.png?t=N7T8http://www.51gjie.com/javaweb/1046.html

  6. springboot注解大全springboot注解大全 (51gjie.com)

    SpringBoot注解就是给代码打上标签的能力。通过引入注解,我们可以简单快速赋予代码生命力,大大提高代码可读性和扩展性。注解本身不具有任何能力,只是一个标签,但是我们可以定义各种标签然后实现各种标签处理器来对类、方法、属性甚至参数等进行功能扩展、功能开启、属性定义、行为定义、规则定义、关联处理、元数据定义等等。

    元注解

    @Documented:将会在被此注解注解的元素的javadoc文档中列出注解,一般都打上这个注解没坏处

    @Target:注解能被应用的目标元素,比如类、方法、属性、参数等等,需要仔细思考

    @Retention:仅在源码保留,还是保留到编译后的字节码,还是到运行时也去加载,超过90%的应用会在运行时去解析注解进行额外的处理,所以大部分情况我们都会设置配置为RetentionPolicy.RUNTIME

    @Inherited:如果子类没有定义注解的话,能自动从父类获取定义了继承属性的注解,比如Spring的@Service是没有继承特性的,但是@Transactional是有继承特性的,在OO继承体系中使用Spring注解的时候请特别注意这点,理所当然认为注解是能被子类继承的话可能会引起不必要的Bug,需要仔细斟酌是否开启继承

    @Repeatable:Java 8引入的特性,通过关联注解容器定义可重复注解,小小语法糖提高了代码可读性,对于元素有多个重复注解其实是很常见的事情,比如某方法可以是A角色可以访问也可以是B角色可以访问,某方法需要定时任务执行,要在A条件执行也需要在B条件执行

    @Native:是否在.h头文件中生成被标记的字段,除非原生程序需要和Java程序交互,否则很少会用到这个元注解

    基本注解

    @Service: 注解在类上,表示这是一个业务层bean

    @Controller:注解在类上,表示这是一个控制层bean

    @Repository: 注解在类上,表示这是一个数据访问层bean

    @Component: 注解在类上,表示通用bean ,value不写默认就是类名首字母小写

    @Autowired:按类型注入.默认属性required= true

    @Resource: 按名称装配。

    启动注解

    @SpringBootApplicationicon-default.png?t=N7T8http://www.51gjie.com/javaweb/1043.html:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中

    @ComponentScanicon-default.png?t=N7T8http://www.51gjie.com/javaweb/1044.html:让spring Boot扫描到Configuration类并把它加入到程序上下文。

    @SpringBootConfigurationicon-default.png?t=N7T8http://www.51gjie.com/javaweb/1045.html :等同于spring的XML配置文件;使用Java代码可以检查类型安全。

    @EnableAutoConfigurationicon-default.png?t=N7T8http://www.51gjie.com/javaweb/1046.html :自动配置。

    HTTP注解

    @RequestBody:HTTP请求获取请求体(处理复杂数据,比如JSON)

    @RequestHeader:HTTP请求获取请求头

    @CookieValue:HTTP请求获取cookie

    @SessionAttribute:HTTP请求获取会话

    @RequestAttribute:HTTP请求获取请求的Attribute中(比如过滤器和拦截器手动设置的一些临时数据),

    @RequestParam:HTTP请求获取请求参数(处理简单数据,键值对),

    @PathVariable:HTTP请求获取路径片段,

    @MatrixAttribute:HTTP请求获取矩阵变量允许我们采用特殊的规则在URL路径后加参数(分号区分不同参数,逗号为参数增加多个值)

    其他注解

    @Transient:表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性。

    @ConfigurationProperties:给对象赋值,将注解转换成对象。

    @RequestMapping:和请求报文是做对应的

    @EnableCaching:注解驱动的缓存管理功能

    @GeneratedValue:用于标注主键的生成策略,通过 strategy 属性指定

    @JsonIgnore:作用是json序列化时将Java bean中的一些属性忽略掉,序列化和反序列化都受影响。

    @JoinColumn(name=”loginId”):一对一:本表中指向另一个表的外键。一对多:另一个表指向本表的外键。

  7. springboot原理(核心原理,启动流程)icon-default.png?t=N7T8http://www.51gjie.com/javaweb/1041.html
  8. SpringApplication详解(run执行启动)icon-default.png?t=N7T8http://www.51gjie.com/javaweb/1042.html
  9. SpringBoot Starter原理(依赖引入,自动配置)icon-default.png?t=N7T8http://www.51gjie.com/javaweb/1048.html

以上内容所在地: JAVAschool免费在线JAVA教程,简单您的JAVA学习!!! (51gjie.com)

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值