spring

spring5坐标

<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.1.RELEASE</version>
</dependency>

spring强调的是面向接口编程,所以绝大多数情况下spring代码都会有接口和实现类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QeNPUQK3-1657703931779)(https://style.youkeda.com/img/ham/course/j4/springbeanvs.svg)]

可以看到调用了MessageService实例的getMessage()方法

仔细对比可以发现我们调用MessageService可以直接从上下文获取,不需要关系实现类

所以最大的spring价值就是完全屏蔽了实现细节,也就意味这降低了工程的复杂度,因为只要开发双发约定好接口就可以一起工作,这都是对面对接口编程的理解

Apache Maven

Maven是一个项目管理和构建自动化工具,最关心的就是它的项目构建功能

Maven提供了一个命令行工具,可以把工程打包成java支持的格式(比如jar),并且部署到中央仓库里,这样使用者只需要到通过工具就可以很快捷地运用别人的代码,只需要添加依赖就可以

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r5lStaxh-1657703981063)(https://style.youkeda.com/img/ham/course/j4/mvn.svg)]

从这个架构可以看到借助于中央仓库,我们可以把java代码任意共享给别人

  • Maven项目结构:
${basedir}:存放pom.xml和所有的子目录
${basedir}/pom.xml: Maven的项目配置文件
${basedir}/src/main/java: 项目的Java源代码
${basedir}/src/main/resourses: 项目的资源文件,比如说propety文件
${basedir}/src/test/java: 项目测试类,比如jUnit代码
${basedir}/src/test/resourses: 测试使用的资源

这里的${basedir}代表的是java工程的根路径

一个Maven项目在默认情况下会产生jar文件,另外,编译后的classes会放在${basedir}/target/classes下面,
jar文件会放在${basedir}/target下面

代码放错位置会导致程序无法完成编译

  • Maven安装
    需配置环境变量

  • Maven命令

mvn clean complie: 编译命令,maven会自动扫描src/main/java下的代码并自动完成编译工作,执行完会在根目录生成target/classes,存放所有的class文件mvn clean package: 编译并打包命令,这个命令是complie和package的集合。也就是说会先执行compile,然后再执行jar打包命令,这个结果会把所有的java文件和资源打包成一个jarmvn clean install: 执行安装命令,这个命令是compile,package,install的集合,也就是会先执行compile命令,再执行jar打包,然后执行install命令安装到本地的Maven仓库目录中,这个目录是${user_home}/.m2
这个${user_home}指的是你电脑登录用户名的个人目录mvn compile exec:java -Dexec.mainClass=${main} :这个命令的意思是在compile执行后,执行运行java的命令,具体执行哪个java类是由-Dexec.mainClass=${main}参数指定的,比如我们想执行com.youkeda.Test类,完整命令就是
mvn compile exec:java -Dexec.mainClass=com.youkeda.Test

maven核心概念

Maven的配置文件是一个强约定的XML格式文件,文件名一定是pom.xml

一个java项目的所有配置都放在POM中,大概有如下的行为:

定义项目的类型,名字

管理依赖关系

定制插件的
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XjlU6XCA-1657703981065)(https://style.youkeda.com/img/ham/course/j4/pomxml.svg)]

1. maven坐标
2. maven工程属性
3. maven依赖
4. maven插件
  • maven坐标
<groupId>com.youkeda.course</groupId>
<artifactId>app</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>

这四个标签组成了maven坐标,所谓坐标就是一种位置信息Maven的坐标就决定了这个maven项目部署后存在maven仓库的文件位置

groupId:就像一个文件夹一样,它的命名和java的包类似,这里一般只用小写的英文字母和字符。

aritifactId:有点像文件名一样,在一个groupId内,它一定是唯一的,不能使用中文字符或者特殊字符

packaging: maven工程执行完后会把整个工程打包成packaging指定的文件格式,默认情况下是packaging的值是jar,如果pom.xml中没有声明这个标签,那就是jar;packaging的值有:jar,war,ear,pom

version:基本遵守了软件工程中对版本号的规定

在maven的世界里,会把一个工程分为两种状态,这也是软件工程中最常用的规范SNAPSHOT 翻译过来就是快照的意思,实际上代表了这个程序还处于不稳定的阶段,随时可以再修改,所以在开发时,会在最后加上SNAPSHOTRELEASE RELEASE和SNAPSHOT是对立面,代表的就是稳定,一般正式发布时会改成RELEASE

三位版本号也是有规则的:

第一位代表的是主版本号:主版本号一般是团队约定来的第二位代表的是新增功能第三位代表的是bugfix后的版本:bugfix是修复代码缺陷,bug的行为

有的时候,我们也可能用两位的版本号,那就是没有第一位的主版本号。

编程过程中约定大于一切

还有一个约定:mvn package,install命令生成的jar文件名是[artifactId]-[version].jar

  • maven属性配置
 <properties><java.version>1.8</java.version><maven.compiler.source>${java.version}</maven.compiler.source><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.target>${java.version}</maven.compiler.target>
</properties>

格式是在properties内,固定格式,properties内的标签可以自定义,但是一般来说只能是小写英文字母加.

默认也有一些公开参数可以调整,比如:

java.version
代表设置一个参数:java.version,值为1.8maven.compiler.source
这个参数是指定Maven编译时候源代码的JDK版本,${java.version}这个值有点特殊,是个动态值${key}语法会找到key参数的值project.build.sourceEncoding
这个参数指定的是工程代码源文件的文件编码格式,一般情况下都设置为UTF-8maven.compiler.target
这个参数作用是按照这个值来进行编译源代码

依赖管理和插件体系

有了maven坐标就可以通过maven的依赖管理来运用其他人的代码

  • 依赖管理 dependencies

dependency就是用于指定当前工程依赖其他代码库的,maven会自动管理jar依赖

一旦在pom.xml里声明了依赖信息,会先去本地用户目录下的.m2文件夹内查找对应的文件,如果没有找到就会触发从中央仓库下载行为,下载完会保存在本地的.m2文件夹中

只需要在pom.xml中添加标签即可

首先声明父标签,然后在其中添加依赖

比如fastjson库

<dependencies><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.62</version></dependency>
</dependencies>

一个pom.xml中只能有一个dependencies标签

一般会把别人写的代码称为三方库,自己、团队写的称为二方库

  • 中央仓库
    Maven会把所有的jar存放在中央仓库里,可以通过中央仓库访问,国内可以访问阿里云的镜像服务器

  • 间接依赖
    比如remote依赖okhttp3,locale依赖remote,那么locale也自动依赖okhttp3

  • 插件体系
    让Maven变得高度可定制

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version></plugin></plugins>
</build>

声明了一个maven-compiler-plugin的插件用于执行mvn compile的,maven的插件也是放在中央仓库的,一切皆是jar

spring简介和maven的简单介绍相关推荐

  1. Maven项目简单介绍

    什么是maven项目 Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件. Apache Maven是一个软件项目管理和依赖管理工具.基于项目对象模 ...

  2. (59)简单介绍RAM IP核类型和接口信号?

    1.1 简单介绍RAM IP核类型和接口信号? 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)简单介绍RAM IP核类型和接口信号?: 5)结束语. 1.1.2 本节引 ...

  3. Spring Cloud微服务系统架构的一些简单介绍和使用

    Spring Cloud 目录 特征 云原生应用程序 Spring Cloud上下文:应用程序上下文服务 引导应用程序上下文 应用程序上下文层次结构 改变Bootstrap的位置Properties ...

  4. Spring 框架简单介绍

    考虑到你可能不熟悉 Spring,我这里对它做下简单介绍.我们常说的 Spring 框架,是指 Spring Framework 基础框架.Spring Framework 是整个 Spring 生态 ...

  5. html作品简介代码,HTML5的标签的代码的简单介绍 HTML5标签的简介

    HTML5的标签的代码的简单介绍 HTML5标签的简介 发布时间:2012-05-28 14:43:34   作者:佚名   我要评论 本文主要介绍了HTML5的标签.不同于以前的标签.更简单.更方便 ...

  6. Spring boot自定义拦截器和拦截器重定向配置简单介绍~!

    大家好: 本文简单介绍一下用于权限控制的Spring boot拦截器配置,拦截器重定向问题. 开发工具:jdk1.8   idea2017(付费版,网上找的破解教程) 1,首先使用idea创建一个Sp ...

  7. 简单介绍【spring.factories】的使用

    前言 starter的使用在springboot项目中可以说是非常常见,可能有些朋友在使用springboot项目的时候只是在网络上找了一篇如何创建一个springboot,如何又和mybatis或m ...

  8. Spring EL 表达式的简单介绍和使用

    文章目录 1. 简单介绍 1.1. 什么是 Spring EL 1.2. 为什么要使用 Spring EL 1.3. 如何使用 Spring EL 2. 简单使用 3. EL 表达式解析引擎 3.1. ...

  9. Spring框架简单介绍

    1.Spring框架的概述: Spring是一个开源代码的设计层面框架,解决的是业务逻辑和其他各层次的松耦合问题,主要的思想是面向接口编程. Spring的核心是控制权反转(IOC)和面向切面(AOP ...

最新文章

  1. 前端后台管理系统梳理
  2. ajax可以发送文件,通过Ajax上传img时如何发送文件信息
  3. 企业实战(Jenkins+GitLab+SonarQube)_11_Jenkins权限的划分
  4. linux 批量进行:解压缩某一类压缩文件类型的文件
  5. pythonlist反转_Python 列表反转显示的四种方法
  6. 关于Hbase的cache配置
  7. c#json对象转数组_如何将Json数组转换为C#中的对象列表
  8. ubuntu12.04 如何设置wiznote到快捷启动栏
  9. 软件质量与测试的新纪元
  10. 法兰克焊接机器人编程入门_FANUC机器人应用
  11. 【转】Power System 中基于 VIOS 的虚拟以太网实现
  12. 微信开发内置浏览器JS自动关闭当前页面回到微信对话窗口
  13. 尼日利亚通货膨胀加剧和MogaFX外汇短缺加剧贬值投机
  14. 《Nature》子刊发布,IIT科学家模仿“植物的触须”,打造可逆渗透致动的仿生软体机器人
  15. 免费开源的工程师项目管理系统
  16. 【软件需求工程与建模】13组组队项目小组分工及当前完成的工作
  17. 数字基建-高速公路智慧建造管控平台
  18. java ssssss,在Java 7中将字符串日期转换为yyyy-MM-dd’T’HH:mm:ss.SSSSSS格式的字符串...
  19. oracle 设置监听和服务,oracle服务端和客户端之间的网络监听如何设置呢?
  20. Unity学习 — Unity与LeanCloud数据存储

热门文章

  1. easyswoole默认访问html,详解PHP框架EasySwoole
  2. 抖音上的c语言动态爱心代码,教程:利用Excel 制作 抖音上的心形动态函数图像 ,可以用来表白哈...
  3. 音频素材自动剪辑视频ae脚本Automated Video Editing
  4. 等比数列公式对数的运算
  5. 超赞!千年历史的都江堰,蕴藏着这个智慧和水利工程原理
  6. Singularity实践教程 + Docker 转 Singularity 的避坑指南
  7. 数据科学家升职记:从助理走向人生巅峰
  8. 2020年Java面试经典100问,进入BAT不是梦
  9. Android 集成zxing二维码扫描、自定义
  10. 1-L-edit16.3基本操作教程-操作不断更新中