SpringBoot项目新手——问题疑惑及解决笔记
文章目录
- Java中@Override的作用
- @ResponseBody与@RestController的作用与区别
- @Autowired与@Resource异同:
- requestmethod.get和post的区别
- @RequestParam注解使用
- 1、作用:
- 2、语法:
- 3、测试环境:
- JSON 基本使用
- 自定义注解
- 持续更新中。。。
Java中@Override的作用
@Override
是伪代码,表示重写(当然不写也可以),不过写上有如下好处:
1、可以当注释用,方便阅读;
2、编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错。例如,你如果没写@Override,而你下面的方法名又写错了,这时你的编译器是可以编译通过的,因为编译器以为这个方法是你的子类中自己增加的方法。
举例:在重写父类的onCreate时,在方法前面加上@Override 系统可以帮你检查方法的正确性。
@Override
public void onCreate(Bundle savedInstanceState){…….}
这种写法是正确的,如果你写成:
@Override
public void oncreate(Bundle savedInstanceState)
{…….}
编译器会报如下错误:The method oncreate(Bundle) of type HelloWorld must override or implement a supertype method
,以确保你正确重写onCreate方法(因为oncreate应该为onCreate)。而如果你不加@Override,则编译器将不会检测出错误,而是会认为你为子类定义了一个新方法:oncreate
@ResponseBody与@RestController的作用与区别
在使用springmvc框架的时候,在处理json的时候需要用到spring框架特有的注解@ResponseBody或者@RestController注解,这两个注解都会处理返回的数据格式,使用了该类型注解后返回的不再是视图,不会进行转跳,而是返回json或xml数据格式,输出在页面上。
那么,这两个注解在使用上有什么区别呢?
@ResponseBody
,一般是使用在单独的方法上的,需要哪个方法返回json数据格式,就在哪个方法上使用,具有针对性。@RestController
,一般是使用在类上的,它表示的意思其实就是结合了@Controller和@ResponseBody两个注解,
如果哪个类下的所有方法需要返回json数据格式的,就在哪个类上使用该注解,具有统一性;需要注意的是,使用了@RestController注解之后,其本质相当于在该类的所有方法上都统一使用了@ResponseBody注解,所以该类下的所有方法都会返回json数据格式,输出在页面上,而不会再返回视图。
@Autowired与@Resource异同:
- @Autowired与@Resource都可以用来装配bean。都可以写在字段上,或写在setter方法上。
- @Autowired默认按类型装配(属于spring规范),默认情况下必须要求依赖对象必须存在,如果要允许null 值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用
- @Resource(属于J2EE复返),默认按照名称进行装配,名称可以通过name属性进行指定。如果没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称查找,如果注解写在setter方法上默认取属性名进行装配。 当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。它们的作用相同都是用注解方式注入对象,但执行顺序不同。@Autowired先byType,@Resource先byName。
requestmethod.get和post的区别
- 方法的@RequestMapping的value就是原先对返回值的限定。method则是对请求method属性的限定。
- 利用@RequestMapping标识控制来进行请求url向物理视图的映射。但是 ,这种对请求的映射不仅仅不局限在标示的方法的返回值对请求url上,还可以对请求的其属性做出约定,如请求的method,是get还是post。如果做出了method的条件限定,当请求的url即使映射上了,method不符合的话也不能生成物理视图并转发到目标页面。
- 一般查询服务的时候用get,向后台提交数据时用post,如注册等等。这个说白了就是http里面get和post的差别了,post安全点,提交的数据多点,数据是放在http头信息里面的,get的参数是在URL后面的。
@RequestParam注解使用
1、作用:
@RequestParam:将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解)
2、语法:
语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””)
value
:参数名
required
:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。
defaultValue
:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值
3、测试环境:
环境:jdk1.8 Tomcat8.5 idea2018 manven父工程子模块
步骤:
1、创建web工程、引入依赖
2、配置SpringMvc入口文件 --DispatcherServlet–为总调度、web.xml里配置
3、创建Springmvc.xml文件–理解为:适配器(这里不需要自已指定适配、springmvc会自动指定)–视图解析器
4、创建 业务处理器 Controller类
5、测试
JSON 基本使用
大佬博客
自定义注解
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;/*** 注解*/
@Target(FIELD)
@Retention(RUNTIME)
@Documented
public @interface FruitName {String value() default "";
}//java.lang.annotation 提供了四种元注解,专门注解其他的注解(在自定义注解的时候,需要使用到元注解):// @Documented – 注解是否将包含在JavaDoc中// @Retention – 什么时候使用该注解// @Target – 注解用于什么地方// @Inherited – 是否允许子类继承该注解
持续更新中。。。
SpringBoot项目新手——问题疑惑及解决笔记相关推荐
- 【SpringBoot】人工更新SpringBoot项目,Jar包太大问题解决,SpringBoot瘦包
楼主也是刚接触SpringBoot几天,以前都是用SpringMVC开发,这里跟小伙伴们分享一个需求问题,如果有遇到的话可以继续往下看,能帮助到各位,是最好不过啦. 我们知道用SpringBoot开发 ...
- docker部署mysql项目_docker部署springboot项目(web + mysql)
前言 docker目前是非常热门的项目,本文暂不讨论docker集群环境中的部署项目问题. 环境准备 1. docker环境(本文使用centos7下的docker环境) 2. javaWeb项目(s ...
- 【解决方法汇总】SpringBoot项目报错 Could not resolve placeholder ‘‘ in value “${}“
SpringBoot项目启动报错 Could not resolve placeholder 'show.tips.text' in value "${show.tips.text}&quo ...
- SpringBoot项目打jar后执行jar包提示:xx没有主属性清单 解决
SpringBoot项目打jar包后执行jar包提示:xx没有主属性清单 解决 今天在练习SpringBoot项目打jar包部署的时间遇见了一个问题:jar中没有主属性清单,对此也是比较疑惑,在百度之 ...
- docker 挂载目录_完美解决:Docker部署SpringBoot项目后图片无法访问和上传,3招搞定!...
以前使用FTP在Linux中使用java -jar xxx.jar部署SpringBoot项目时,由于在项目中指定了主机文件存放路径映射,可以直接访问服务器的文件. 但是最近入坑Docker,将Spr ...
- 解决(springboot项目)mysql表名大写,造成jpa Table doesn‘t exist问题
解决(springboot项目)mysql表名大写,造成jpa Table doesn't exist问题 参考文章: (1)解决(springboot项目)mysql表名大写,造成jpa Table ...
- jpa遇到mysql表名大写怎么办_解决(springboot项目)mysql表名大写,造成jpa Table doesn't exist问题...
一般实体类中的属性, 如contentType会被hibernate默认映射为content_type,如果数据库中的字段是contenttype则会不匹配 这个问题有2种解决方法: 我的报错是: j ...
- jsp连接mysql显示404,SpringBoot+jsp项目启动出现404的解决方法
通过maven创建springboot项目启动出现404 application.properties配置 spring.mvc.view.prefix=/WEB-INF/jsp/ spring.mv ...
- 解决(springboot项目)mysql表名大写,造成jpa Table doesn't exist问题
这个问题有2种解决方法: 我的报错是: java.sql.SQLSyntaxErrorException: Table 'gaei_ms.gaei_work_task' doesn't exist 方 ...
最新文章
- java operators_Java Basic Operators
- 下一代超大规模软件定义网络技术实践
- Spring Security 实战:使用 JWT 认证访问接口
- Python强大的格式化format
- Codeforces Round #183 (Div. 2)
- 超级寒潮考验智慧城市万亿投资
- android 二次绘制 layout,View的三次measure,两次layout和一次draw
- 超赞 | 计算机视觉联盟全新Logo!近期精华回顾!
- 计算机五大逻辑部件数据流,211计算机基础知识综合篇.ppt
- JavaWeb编年史(青铜时代)
- c语言中判断c是否为小写字母,C语言判断英文字符大小写的方法
- (附源码)SSM医院人事及科室病区管理JAVA计算机毕业设计项目
- 写一段python爬取付费音乐的代码
- Android 系统自动获取来电/短信/提示铃声
- 蓝桥杯STM32G431——RTC实时时钟
- Ubuntu+QT+SSL+MQTT
- AppiumLibrary 时间控件的选择
- 人工智能热潮_团结与增强现实热潮
- linux 如何安装maven
- 【分享】一年级古诗古朗月行语文知识点心田花开汇总
热门文章
- Android之BaseRecyclerViewAdpater(3.0.4版本)当页面第二次滑到底部的时候没有触发OnLoadMoreListener监听的onLoadMore函数
- Android之jni出现JNIEnv has no member named ‘GetMehtodID‘解决办法
- linux 配置path
- Linux之VI命令详解
- 基于c语言单片机秒表课程设计,基于c语言单片机秒表课程设计要点.doc
- linux 编译工具链,Linux工具链for TKStudio下载_Linux工具链for TKStudio官方下载-太平洋下载中心...
- java获取tomcat目录结构_tomcat目录结构简介_动力节点Java学院整理
- 你和985硕博研究生,差了这些东西
- 怎样快速掌握深度学习TensorFlow框架?
- PL/SQL Developer使用技巧总结