1Spring boot简介

主要用来简化spring开发,快速地创建独立的spring项目,并且与云计算天然集成。

2. @Controller 

标记一个类是Controller,也可以标记方法,标记方法时是指传统Web的Controller,返回的是字符串。

3. @ResponseBody

注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML。例如:  
 @RequestMapping("/login")
@ResponseBody
public User login(User user){
  return user;
}
User字段:userName pwd
那么在前台接收到的数据为:
 '{"userName":"xxx","pwd":"xxx"}'
效果等同于如下代码:
 @RequestMapping("/login")
public void login(User user, HttpServletResponse response){
response.getWriter.write(JSONObject.fromObject(user).toString());
}

4. @RequestBody

将前端发来的json格式数据转换成java对象,比如
 @PostMapping(value = "/log/runtime/info")
public CommonResponse getMesosClusterInfo(@RequestBody QueryLogRequest request) throws BearException {
CommonResponse commonResponse = new CommonResponse();
commonResponse.setData(request);
return commonResponse;
}

5. @RestController

@RestController = @Controller + @ResponseBody
在编写接口时标记方法是一个Rest接口,返回一个可序列化的Json或者XML对象。Controller中的注解具体可以参考:必须知道的Spring Boot中的一些Controller注解

6. @RequestMapping简介

指定控制器可以处理哪些URL请求,相当于Servlet中在web.xml中配置:
 <servlet>
<servlet-name>servletName</servlet-name>
<servlet-class>ServletClass</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>serveltName</servlet-name>
<url-pattern>url</url-pattern>
</servlet-mapping>
(1)在@Target中有两个属性,分别为 ElementType.METHOD 和 ElementType.TYPE ,也就是说 @RequestMapping 可以在方法和类的声明中使用;
(2)可以看到注解中的属性除了 name() 返回的字符串,其它的方法均返回数组,也就是可以定义多个属性值,例如 value() 和 path() 都可以同时定义多个字符串值来接收多个URL请求。

7. @Configuration 和 @Bean 注解

@Configuration 的注解类表示这个类可以使用 Spring IoC 容器作为 bean 定义的来源。@Bean 注解告诉 Spring,一个带有 @Bean 的注解方法将返回一个对象,该对象应该被注册为在 Spring 应用程序上下文中的 bean。具体解释可见:https://www.cnblogs.com/wuchanming/p/5426746.html 

8. @EnableAutoConfiguration 

作用是从classpath中搜索所有META-INF/spring.factories配置文件,然后将其中org.springframework.boot.autoconfigure.EnableAutoConfiguration key对应的配置项加载到spring容器
只有spring.boot.enableautoconfiguration为true(默认为true)的时候,才启用自动配置。

9. @ComponentScan

自定扫描路径下边带有@Controller,@Service,@Repository,@Component注解加入spring容器
通过includeFilters加入扫描路径下没有以上注解的类加入spring容器
通过excludeFilters过滤出不用加入spring容器的类。具体参见https://blog.51cto.com/4247649/2118342

10. @SpringBootApplication

@SpringBootApplication=@Configuration+@EnableAutoConfiguration+@ComponentScan

11. @Primary和@Qualifier

使用场景:如果在通过@Autowired自动注入时,注入的接口存在多个实现类且当我们不具体指定哪个实现类时,SpringBoot会报错,此时可以使用@Primary指定一个类为默认偏好(preference)的实现类,在JPA的多数据源实现中就使用到了@Primary。
      /**
* EntityManager profile.
*/
@Primary
@Bean(name = "entityManagerPrimary")
public EntityManager entityManager(EntityManagerFactoryBuilder builder) {
return entityManagerFactoryPrimary(builder).getObject().createEntityManager();
}

使用场景:如果在@Autowired自动注入时有多个候选实现类的Bean,可以通过@Qualifier在自动注入的地方传入一个限定名(也就是类的别名)来选取指定的实现类,此时自动注入的策略就从 byType 转变成 byName,同样在JPA的多数源实现中也使用到了@Qualifier。

 @Configuration
public class DataSourceConfig {
@Bean(name = "primaryDataSource")
@Qualifier("primaryDataSource")
@Primary
@ConfigurationProperties(prefix = "spring.datasource.primary")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
} @Bean(name = "secondaryDataSource")
@Qualifier("secondaryDataSource")
@ConfigurationProperties(prefix = "spring.datasource.secondary")
public DataSource secondaryDataSource() {
return DataSourceBuilder.create().build();
}
}

12. @CreatedDate 和 @LastModifiedDate

用处:Spring Data JPA提供了相应的时间注解,一个是更新时间,一个是创建时间。

用法:

(1) 在Application启动类中添加注解@EnableJpaAuditing;

(2) 在实体类上加上注解 @EntityListeners(AuditingEntityListener.class);

(3) 在相应的字段上添加对应的时间注解 @LastModifiedDate 和 @CreatedDate

13. @Slf4j

用它不用每次都写private final Logger logger = LoggerFactory.getLogger(XXX.class);

14. Lombok

使用lombok优雅的编码

⚠️注意:lombok中的@Builder注解默认生成的构造器是“default”的,可以被同package的类调用(default限制不同package类的调用),而我们希望构造器设为private,此时需要用到“@AllArgsConstructor(access = AccessLevel.PRIVATE)”。所以最终写法:

 @Builder
@AllArgsConstructor(access = AccessLevel.PRIVATE)

15. URL命名规则

  • URL尽量全部小写,用户方便输入;
  • 不建议驼峰或者下划线_连接,搜索引擎会把下划线自动忽略掉,可以使用中划线‘-’连接,sou;
  • 对于CURD,URL相同,请求方法(get、post、put、delete)不同,也作为不同的接口;
  • URL参数尽量不超过3个;
  • 资源必须采用资源名词复数的形式,比如https://api.github.com/user/emails 

16. URL和URI

URI(Uniform Resource Identifier)字面上的意思是,统一资源标示符
URL(Uniform Resource Locator),统一资源定位符
但是标示是什么意思?定位又是什么意思?
举个简单的栗子

Springboot知识点的更多相关文章

  1. springboot知识点补充(一)

    测试配置 @RunWith(SpringRunner.class) @SpringBootTest @Configuration @ActiveProfiles("test") p ...

  2. springboot 知识点

    ---恢复内容开始--- 1springBoot项目引入方式, 1,继承自父 project (需要没有付项目才能用,一般我们的项目都会有 父 项目 所以 这种方式不推荐 ,记住有这种方式 就可以了) ...

  3. springboot知识点【笔记】

    # **一.**Spring Boot 入门 ## 1.Spring Boot 简介 > 简化Spring应用开发的一个框架:>> 整个Spring技术栈的一个大整合:>> ...

  4. SpringBoot28 RabbitMQ知识点、Docker下载RabbitMQ、SpringBoot整合RabbtiMQ

    1 RabbitMQ知识点 1.1 整体架构图 消息生产者将消息投递到exchange中,exchange会以某种路由机制将生产者投递的消息路由到queue中,消息消费者再从queue中获取消息进行消 ...

  5. springboot整合redis缓存一些知识点

    前言 最近在做智能家居平台,考虑到家居的控制需要快速的响应于是打算使用redis缓存.一方面减少数据库压力另一方面又能提高响应速度.项目中使用的技术栈基本上都是大家熟悉的springboot全家桶,在 ...

  6. SpringBoot 系列教程之事务隔离级别知识点小结

    SpringBoot 系列教程之事务隔离级别知识点小结 上一篇博文介绍了声明式事务@Transactional的简单使用姿势,最文章的最后给出了这个注解的多个属性,本文将着重放在事务隔离级别的知识点上 ...

  7. Spring和Springboot相关知识点整理

    简介 本文主要整理一些Spring & SpringBoot应用时和相关原理的知识点,对于源码不做没有深入的讲解. 1. 思维导图 右键新窗口打开可以放大. 说明 使用@Configurati ...

  8. SpringBoot小知识点

    记录SpringBoot的小知识点 一.在 Spring 上下文刷新之前设置一些自己的环境变量 1.实现 EnvironmentPostProcessor 接口 2.spring.factories ...

  9. SpringBoot(一)-- 知识点介绍

    一.简介 Spring Boot是为了简化Spring应用的创建.运行.调试.部署等而出现的,使用它可以做到专注于Spring应用的开发,而无需过多关注XML的配置.简单来说,它提供了一堆依赖打包,并 ...

随机推荐

  1. readLine()的注意点

    我在用socket做即时通讯的时候,读取服务器返回的信息用了BufferedReader,用起来挺方便的. BufferedReader br = new BufferedReader(new Inp ...

  2. 使用nginx代理后以及配置https后,如何获取真实的ip地址

    使用nginx代理后以及配置https后,如何获取真实的ip地址 Date:2018-8-27 14:15:51 使用nginx, apache等反向代理后,如果想获取请求的真实ip,要在nginx中 ...

  3. Python 反射机制之hasattr()、getattr()、setattr() 、delattr()函数

    反射机制 先看看我对Java中反射机制的通俗理解:反射之中包含了一个“反”的概念,所以要想解释反射就必须先从“正”开始解释,一般而言,当用户使用一个类的时候,应该先知道这个类,而后通过这个类产生实例化 ...

  4. linux(centos)无中文输入,如何解决

    1.终端执行安装命令 yum install "@Chinese Support" 2.如下图,多出Input method 3.点击进行配置 4.reboot重启系统,新建一个文 ...

  5. 智能POS打印配置&常见问题FAQ 12-14 后期持续更新

    1.安卓一体机会员注销钱会不会退回到支付宝 智能pos会员注销钱目前只能现金退还. 2.支付异常订单悬浮球在哪关闭 设置-->功能设置-->系统设置-->开启支付异常订单悬浮球 3. ...

  6. 商家中心FAQ

    1.订购的账号为什么不生成子账号,生成了一个主账号,进店铺里面看子账号也没有 原因:授权失败了,数据库没有生成店铺授权信息 解决方案:重新授权

  7. java中的泛型与反射

    在java开发中,大多数情况是多人开发,那么如何在没有API的情况下,快速的理解到别人开发的一些类的详细信息呢? 比如函数名,类名,返回参数等等 我们可以定义一个反射机制的类,通过此类来打印此你想要操 ...

  8. C#-运算符(四)

    算术运算符 +:两个操作数相加,例:2+3得5 -:第一个操作数减去第二个操作数 例:5-3得2 *:两个操作数相乘,例:2*3得6 /:分子除以分母,例:5/2得2 %:取模运算符,整除后的余数,例 ...

  9. Spring入门详细教程(一)

    一.spring概述 Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用.Spring是于2003 年兴起的一个轻量级的 ...

  10. Xmanager power suit 6 最新版注册激活

    Xmanager Power Suit 6.0.0012 最新版注册激活,长期更新 操作步骤 Xmanger Power Suit 官方 其实有两种 .exe 文件,一个是用于试用的,在注册的时候不能 ...