首页 > 编程语言 > 详细

Springboot知识点

时间:2019-04-20 22:14:20      阅读:139      评论:0      收藏:0      [点我收藏+]

1Spring boot简介

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

2. @Controller 

标记一个类是Controller 。

3. @ResponseBody

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

4. @RequestBody

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

5. @RestController

@RestController = @Controller + @ResponseBody

6. @RequestMapping简介

指定控制器可以处理哪些URL请求,相当于Servlet中在web.xml中配置:
1 <servlet>
2     <servlet-name>servletName</servlet-name>
3     <servlet-class>ServletClass</servlet-class>
4 </servlet>
5 <servlet-mapping>
6     <servlet-name>serveltName</servlet-name>
7     <url-pattern>url</url-pattern>
8 </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. URL命名规则

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

12. URL和URI

URI(Uniform Resource Identifier)字面上的意思是,统一资源标示
URL(Uniform Resource Locator),统一资源定位
但是标示是什么意思?定位又是什么意思?
举个简单的栗子??
比如说我们查到东北大学校长赵X,办公室地址辽宁省沈阳市东北大学xx教xx号。这样大家都知道了东北大学的校长姓赵,这样赵校长就和这个头衔对应了起来。同样地我们可以通过一个URI来确定它代表着什么,比如baidu.com代表百度,xxx@qq.com代表QQ邮箱,这样就是一个标示。URI就是网络资源的头衔,通过URI标记可以把网络世界里面的每一个事物都加以标记并区分。
如果有一天,我们去拜访我们学校的校长,只知道我们学校的校长姓赵,在东北大学,但是他不知道准确的办公室地址,也不能去找到他。所以我们为了能够使网络上的资源能被广泛的大多数的人能访问到,还需要给他添加一个地址,比如通过东北大学xx教xx号能可以找到赵校长的办公室。反应到网络世界中去就是,我们知道baidu.com代表是一个百度,标示它是百度,当有一天我们想要访问百度地图的时候,我们只有一个baidu.com是找不到百度地图的,但是如果map.baidu.com这样和百度地图对应起来,我们就可以直接找到百度地图的网络资源。相当于给我们提供了资源存放的地址门牌号,我们只是去取得资源。

13. IDEA中的classpath问题

Thread.currentThread().getContextClassLoader().getResource("")得到当前的classpath的绝对路径的URI表示。如:file:/Users/admin/akia/data/bin/
一般情况下,用到的资源文件(各种xml,properites,xsd文件等)都放在src/main/resources下面,maven打包时能把这些资源文件打包到相应的jar或者war里。
例如:
技术分享图片

技术分享图片

 

Springboot知识点

原文:https://www.cnblogs.com/lcmichelle/p/10742852.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!