目录一、Maven学习1、Maven中的dependencyManagement和dependencies区别2、maven作用3、maven插件-assembly4、 标签二、RequestBody注解的作用一、Maven学习1、Maven中的dependencyManagement和dependencies区别Maven中使用dependencyManagement元素来提供一种管理依赖版本号的方式。通常会在一个组织或者项目的最顶层的父POM中看到dependencyManagement元素。使用pom.xml中的dependencyManagement元素能让所有在子项目中引用一个依赖而不用显式的列出版本号。Maven会沿着父子层次向上走直到找到一个拥有dependencyManagement元素的项目然后它就会使用这个dependencyManagement元素中指定的版本号。好处是如果有多个子项目都引用同一样依赖则可以避免在每个使用的子项目里都声明一个版本号这样当想升级或切换到另一个版本时只需要在顶层父容器里更新而不需要一个一个子项目的修改另外如果某个子项目需要另外的一个版本只需要声明version就可。dependencyManagement里只是声明依赖并不实现引入因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖是不会从父项目中继承下来的只有在子项目中写了该依赖项并且没有指定具体版本才会从父项目中继承该项并且version和scope都读取自父pom如果子项目中指定了版本号那么会使用子项目中指定的jar版本。Idea中Maven仓库选择setting文件中路径可修改localRepositoryD:/repo/localRepositoryMaven官网下载.zip版软件 Maven官网下载下载完直接解压1.配置环境变量M2_HOME2. 在path变量的最后面加上 ;%M2_HOME%\bin注意%号前面的;号不能扔掉cmd 命令 mvn -version出现maven版本即配置成功。2、maven作用1 . 帮你下载jar包maven项目会有一个 pom.xml文件 在这个文件里面只要你添加相应配置他就会自动帮你下载相应jar包不用你铺天盖地的到处搜索你需要的jar包了2 . 寻找依赖帮你下载依赖3 . 热部署热编译意思就是在你web项目已经运行的时候修改代码的能直接被web服务器所接受就不需要你重启服务器了或者重新部署代码了而且你可以直接通过maven 打包war或者jar项目。3、maven插件-assemblyMaven有三种打包方式分别为assembly自定义的打包结构也可以定制依赖项等;把项目打包成可执行的jarjar默认的打包方式用来打普通的project JAR包shade用来打可执行jar包也就是所谓的fat JAR包。maven-assembly-plugin是Maven中一个强大的插件用于将项目及其依赖项、资源文件等打包成自定义的分发包如ZIP、TAR、JAR等格式什么是Assembly?“assembly”是把一组文件、目录、依赖元素组装成一个归档文件. 比如, 假设一个 Maven project定义了一个JAR artifact它包含控制台应用程序和Swing应用程序 。这样一个工程可以定义两套包含描述符一套给给控制台应用另一套给Swing应用程序它们包含各自的脚本、目录和依赖。Assembly Plugin的描述符可以定义任何一个文件或者目录归档方式。举个例子如果的你的Maven 2工程包含”src/main/bin”这个目录你可以指示Assembly插件复制“src/main/bin”目录下所有的文件到bin目录里归档文件里的目录并且可以修改它们的权限属性UNIX mode。在pom.xml 文件里面的配置说明plugin groupIdorg.apache.maven.plugins/groupId artifactIdmaven-assembly-plugin/artifactId version3.6.0/version executions !--执行器 mvn assembly:assembly-- execution idmake-zip/id!--名字任意 -- phasepackage/phase!-- 绑定到package生命周期阶段上 -- goals goalsingle/goal!-- 只运行一次 -- /goals configuration descriptors !--描述文件路径-- descriptorsrc/main/resources/zip.xml/descriptor /descriptors /configuration /execution /executions /pluginshade打包官方教程https://maven.apache.org/plugins/maven-shade-plugin/examples/attached-artifact.htmljar打包官方教程 https://maven.apache.org/shared/maven-archiver/examples/classpath.htmlassembly打包官方教程https://maven.apache.org/plugins/maven-assembly-plugin/examples/single/filtering-some-distribution-files.htmlMaven的三种打包方式jar、shade、assembly4、resources标签在 Maven 项目中resources 标签用于配置哪些非 Java 源文件如配置文件、静态资源等需要被打包到最终的构建输出通常是 target/classes中。默认情况下Maven 会自动处理 src/main/resources 目录下的内容但若需自定义资源路径、启用变量替换filtering或包含其他目录如 src/main/java 中的 XML 文件则需显式配置 resources‌核心作用‌‌指定资源目录‌告诉 Maven 哪些目录下的文件应被包含在打包结果中。‌启用变量替换filtering‌将资源文件中的占位符如${property}替换为pom.xml中定义的属性值。‌精细控制包含/排除文件‌通过includes和excludes精确筛选需要处理的文件。build resources resource directorysrc/main/resources/directory /resource resource directorysrc/main/java/directory includes include**/*.xml/include /includes /resource /resources /build二、RequestBody注解的作用RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的)所以只能发送POST请求。GET方式无请求体所以使用RequestBody接收数据时前端不能使用GET方式提交数据而是用POST方式进行提交。在后端的同一个接收方法里RequestBody与RequestParam()可以同时使用RequestBody最多只能有一个而RequestParam()可以有多个。注一个请求只有一个RequestBody一个请求可以有多个RequestParam。jQuery中$.ajax()默认发送的参数类型及编码为application/x-www-form-urlcoded而RequestBody处理的参数类型及编码为aplication/json或者是application/xml通过contentType属性来指定在传递之前对JSON对象要使用JSON.stringify()JSON.stringify() 方法将一个 JavaScript 值(对象或者数组)转换为一个 JSON 字符串后端RequestBody注解对应的类在将HTTP的输入流(含请求体)装配到目标类(即:RequestBody后面的类)时会根据json字符串中的key来匹配对应实体类的属性如果匹配一致且json中的该key对应的值符合(或可转换为)实体类的对应属性的类型要求时会调用实体类的setter方法将值赋给该属性。注当同时使用RequestParam和RequestBody时RequestParam指定的参数可以是普通元素、数组、集合、对象等等(RequestBody 与RequestParam()可以同时使用时原SpringMVC接收参数的机制不变只不过RequestBody 接收的是请求体里面的数据而RequestParam接收的是key-value里面的参数所以它会被切面进行处理从而可以用普通元素、数组、集合、对象等接收)。天下事有难易乎为之则难者亦易矣不为则易者亦难矣。