管理工具:Apache Maven
· 作用:
可以帮助我们构建项目、管理项目中的jar包
· Maven仓库:存放构件的位置
- 本地仓库:默认是 ~/.m2/repository
- 远程仓库:中央仓库(Maven官网)
镜像仓库(第三方网站对官网仓库的部分拷贝)
私服仓库(有些企业自己搭建的仓库)
本项目会把远程仓库改为阿里云的镜像仓库maven.aliyun.com
本地仓库和远程仓库有什么联系呢?
当maven想下载构件的时候,会先去查找本地是否有所需配件,若没有则再去远程仓库中下载
· 配置:
1.下载并解压完成后,在目录D:\work\apache-maven-3.6.3\conf下找到文件settings.xml
2.右键Edit with Notepad++,修改mirror部分如下
3.配置环境变量:在path中添加
为了在cmd中能直接调用mvn.cmd,将D:\work\apache-maven-3.6.3\bin配置到系统环境变量path中
4.maven命令:
手册地址https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html
1>查看版本:mvn -version
2>新建项目:mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
实际新建项目的时候命令修改如下:
新建完成
则在workspace下会有项目mavendemo1
D:\work\workspace\mavendemo1\src该目录下main放的是正式的代码,test放的是测试的代码,当将来部署项目、上线项目是,测试代码就会被抛弃
C:\Users\47176\.m2\repository本地仓库,该目录下是maven自动从远程仓库下载的资源
3>编译项目:
(1)dos中,首先进到有pom.xml的文件夹下,然后输入命令mvn compile,完成后,在目录D:\work\workspace\mavendemo1下多了一个target文件夹,target-->classes-->com-->nowcoder-->mavendemo1下有app.class文件。
(2)重新编译的话,命令mvn clean,target文件夹就没有了,重新mvn compile编译就又有了。
(3) mvn clean compile的意思是先清理再编译
(4)mvn clean test 清理先前编译的,重新编译测试,实则test中包含了编译。目录target中多了一个test-classes,里面是编译好的测试程序
集成开发工具:Intellij IDEA
目前最流行的Java集成开发工具
下载安装包安装
安装完成后在导入界面的configure先选择settings进行设置
idea可以帮助调用maven命令,前提是告诉IDEA maven在哪,因此需要build tools中的maven设置
设置完成后创建新项目,点create new project,然后选择jdk和maven模板
创建好新项目后报错,在idea中查看日志help->show log in explore,打开idea.log,找到error的位置
经过百度,网上说是maven3.6.3和idea2018不兼容,因此要卸载重装maven
maven由于安装的时候只是解压,配置环境变量,设置本地仓库,所以卸载的时候也很简单
1、删除解压的maven文件夹;
2、删除设置的环境变量MAVEN_HOME,删除Path里添加的“%MAVEN_HOME%\bin;”;
3、删除本地仓库;C:\Users\47176\.m2
maven重新安装成功
如果要重新安装maven并且创建和原来目录D:\work\workspace中一样的项目名时,最好是把原有项目直接删除同时清空回收站,如果只是删除,没有清空回收站,在用idea创建项目名相同的项目时会报错。
终于在idea中创建项目成功,看窗口i最右边有maven标签,点开标签会有maven操作命令,执行收双击即可
平时编译为了方便,点出窗口上方build,build project来完成编译,或者快捷键ctrl+F9
运行时,可直接右键选择run()...
Spring Initializr
• 作用:创建 Spring Boot 项目的引导工具
• 示例:创建“牛客社区”项目
• 使用该工具原因:
虽然maven已经能很方便的管理包,但是当包太多的时候也会有麻烦,如果项目要用到的包太多的话,都要通过maven去官方或镜像搜索下载这些包。具体关于怎样去搜索这些包,到网站https://mvnrepository.com/直接搜索相关包,比如mysql,搜索结果会反馈下载量,就选择下载量最高的选项点开以后,找到代码框复制代码
复制到项目的pom.xml文件中的<dependencies></dependencies>模块中去,如下位置。
保存后,maven就会根据这个配置自动下载这个包,但是包太多了总不能一个一个去配置,而使用Spring Initiallizr工具就能很好地解决这个问题。那么这个工具时如何发挥最用的呢,这个工具会把平时开发所用到的包做整合,然后按照功能/需求进行归类,比如我在做web开发时,我直接在这个工具中搜索web关键字,那么我就可以直接引入一批web开发相关包,而不用再一个一个引入。即做哪一方面的开发,就可以直接引入相关的一类包,但是其底层还是基于maven。
• 配置步骤
1.网址:https://start.spring.io
2.在官网配置如下,基本都是默认选好的,只有group、name那些信息需要自己修改
3.dependencies就表示不同类的jar包集合,需要引入的有aspects(核心功能)、web、thymeleaf(模板引擎来生成页面)、devtools(开发者工具,我们在开发过程中有这个工具就会很方便,比如说当我代码修改后需要重新编译启动服务器时,这个工具会帮助开发者自动重启)
(因为这个网站找不到aspects类包了,所以我到mvnrepository下载了spring aspects包,然后配置到pom.xml文件中去了)
4.选好所有选项后,点generate生成项目压缩包,然后解压至一个路径中
5.在idea中file->open->打开community项目,配置完成
· 补充说明:
因为这个项目是web项目而非普通项目,所以它的结构有些不同,java下有我们自己建的包(com.nowcoder.community),包下面是自带的类,类中的代码就和刚才的demo中类的代码不一样;
resources文件夹下存放的是配置文件以及静态资源,包括要用的网页模板、网页所依赖的图片、样式、js都存放在这里,application.properties是配置文件,之后的学习中再做解释。
运行main方法,在CommunityApplication中右键run,运行结果有很多信息包括spring的图标
其中运行结果:
tomcat以8080端口启动成功了,而且程序没有终止,处于一直在运行的状态,即此方法的底层自动启动了tomcat应用服务器。spring boot以jar包的方式内嵌了tomcat,运行这个main方法启动的就是内嵌的tomcat,因此即使我们没有另外装tomcat也会出现此类运行的情况。当然也可以在External Libraries中找到tomcat相关jar包。如图
既然服务器启动了,那么就可以通过浏览器访问,服务器本身就是服务于浏览器的。打开浏览器访问:输入localhost:8080,跳转到一个whitelabel error page,但是这一结果也表明服务器确实处于启动工作的状态。
以上利用spring initializr创建spring boot项目的环节就完成了。
Spring Boot 入门示例
当我访问服务器的某一个路径时,能给返回一句话就可以。比如hello spring boot
• Spring Boot 核心作用 - 起步依赖、自动配置、端点监控
1.起步依赖:pom.xml中dependencies下的包都叫做spring-boot-starter-aop 、spring-boot-starter-web、spring-boot-starter-thymeleaf等,这些包就叫做起步依赖,依赖的不是一个包,而是每一个stater包里又包含了一堆包,可以通过ctrl+点击某个dependencies下的包,看到某个包底层的dependencies的构成。简单来说就是一大堆包的组合就叫做起步依赖。
2.自动配置:
如果不使用spring boot 那么就需要自己去配置很多内容和配置文件,要想启动web项目、使用spring框架则需要做很多配置,但是利用spring boot几乎不需要配置,就可以把服务器启动。
3.端点监控:
当项目上线以后,项目的运行状况是否良好需要用spring boot提供协助。(在之后的讲解中会有相关解释)
• 示例 - 一个简单的处理客户端请求案例
首先在新建个包controller,controller之下新建一个类AlphaController(不是项目示例,只是一个演示demo)
类中需要写springMVC注解,至于这些注解之后还会有详细介绍
代码如图:
在tomcat已经启动的情况下,代码经过修改需要重新编译,直接build->build project,或者点按钮
tomcat未启动的状态下直接运行即可run()
然后打开浏览器,localhost:8080/alpha/hello
浏览器访问服务器,服务器返回了想要的这一句话
所以用spring boot去构建项目,去开发一个前后端交互的功能居然是这样的简单,这也是spring boot项目的优势。
补充:
服务不用的时候要把它关掉。
tomcat启动的时候默认的端口号是8080,下面说如何修改tomcat端口:
找到配置文件application.propeties ,在其中敲入如图代码
重新运行项目