一 maven

1. Maven的相关概念

1.1 项目开发中遇到的问题

(1)都是同样的代码,为什么在我的机器上可以编译执行,而在他的机器上就不行?

(2)为什么在我的机器上可以正常打包,而配置管理员却打不出来?

(3)项目组加入了新的人员,我要给他说明编译环境如何设置,但是让我挠头的是,有些细节我也记不清楚了。

(4)我的项目依赖一些jar包,我应该把他们放哪里?放源码库里?

(5)这是我开发的第二个项目,还是需要上面的那些jar包,再把它们复制到我当前项目的svn库里吧

(6)现在是第三次,再复制一次吧    ----- 这样真的好吗?

(7)我写了一个数据库相关的通用类,并且推荐给了其他项目组,现在已经有五个项目组在使用它了,今天我发现了一个bug,并修正了它,我会把jar包通过邮件发给其他项目组,这不是一个好的分发机制,太多的环节可能导致出现bug

(8)项目进入测试阶段,每天都要向测试服务器部署一版。每次都手动部署,太麻烦了。

1.2 解决方案

  需要一个工具进行项目管理,对项目中的jar包进行管理、jar包的版本管理、项目的打包的流程管理。实现一步构建

(1)Ant:

  可以对项目进行构建。缺少生命周期的管理,需要自己手工定义。需要自己定义一个build.xml,缺少jar包的管理。对工程的目录结构没有约束

(2)Maven

  拥有约定,知道你的代码在哪里,该放到哪里去。拥有一个生命周期,例如执行mvn install就可以自动执行编译,测试,打包等构件过程,只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮你处理其他事情

1.3  什么是maven

  maven翻译为“专家”,“内行”。Maven是基于 项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具

  Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建依赖管理项目信息管理

  Maven主要有两个功能:

    (1)项目构建

    (2)依赖管理 

1.4 什么是构建

maven定义的工程构建生命周期:

编译的时候会有些中间文件,当你再次编译时就要将这些文件清理掉,所以在编译前会有清理这一步

1.5 Maven的模型

2. Maven的安装

第一步:安装jdk

第二步:把maven解压缩

第三步:配置环境变量MAVEN_HOME.

E:\development\apache-maven\apache-maven-3.6.2-bin\apache-maven-3.6.2

第四步:在path中添加%MAVEN_HOME%/bin

第五步:测试

Mvn -v测试

3. maven在eclipse中使用

3.1 在eclipse中安装maven

Window---->preferences得到如下图

点击apply and close即可

User Settings  用户自定义设置

3.2 创建maven工程

(1)第一种形式:java项目

最终可得到如下形式的项目:

(2)第二种形式:web项目

前面步骤同上

得到如下项目

配置pom.xml文件

若想添加mysql的jar包,可以直接在依赖处添加mysql的依赖坐标(有网的情况下,否则就得配置本地仓库)

在pom.xml的依赖处添加mysql的依赖坐标,如下图

3.3 创建本地仓库

maven安装包--->conf---->setting.xml

由于每次下载jar包都需要去外网下载,网速会很慢,所以可以配置访问阿里云的镜像(国内),这样下载相应的包速度就很快

这样setting.xml文件就算设置好了,接下来直接在eclipse中添加配置文件:windows-preference-Maven里面的User-Settings,里面有一个是全局设置,一个是用户设置,最后一个是本地仓库位置(前面两个配置好,update后会自动填写),把两个设置都改为你的settings路径就行了

Could not read settings.xml
Could not read settings.xml 字面上的意思是读取不了这个文件,说明你的文件里面的内容有问题
1、编码问题:内容里面最好不要有中文,配置完之后一定要以 utf-8 的形式保存
2、空格问题:允许换行,但是不允许有多个空格的出现
3、配置仓库路径的时候不要用的是 / 符号

一开始,本地仓库是个空的文件夹,当我们创建一个项目时,本地仓库中就会自动多一些jar包,如下图

若想将项目放到本地仓库,可以如下操作

二. springboot

  springboot是spring的一个全新的框架,其能简化项目搭建过程和开发效率

1. 整合spring和springmvc

1.1 整合流程:

(1)使用maven构建web项目

(2)在pom文件中添加springboot的父工程依赖(必须)

(3)添加webstarter的依赖

 说明:Spring Boot提供了很多”开箱即用“的依赖模块,都是以spring-boot-starter-xx作为命名的。举个例子来说明一下这个起步依赖的好处,比如组装台式机和品牌机,自己组装的话需要自己去选择不同的零件,最后还要组装起来,期间有可能会遇到零件不匹配的问题。耗时又消力,而品牌机就好一点,买来就能直接用的,后续想换零件也是可以的。相比较之下,后者带来的效果更好点(这里就不讨论价格问题哈),起步依赖就像这里的品牌机,自动给你封装好了你想要实现的功能的依赖。就比如我们之前要实现web功能,引入了spring-boot-starter-web这个起步依赖。

(4)编写启动类

@SpringBootApplication
public class AppStart {
public static void main(String[] args) {
SpringApplication.run(AppStart.class, args);
}
}

(5)编写控制器

@Controller
public class PageController {
@RequestMapping("/")
public String index() {
return "index.html";
}
}

注意:springboot默认存放静态资源的地方为src/main/resources下的static文件夹

点击启动类,开启springboot(不需要再点击tomcat开启了), 浏览器中输入请求:http://localhost:8080/(此处url不需要输入项目名,因为以前是一个tomcat中包含多个项目,此处只有一个)

1.2 注解   

1.2.1 

特殊的类,可以写在类上,方法上,属性是哪个,具有特殊的含义

@Controller  @Service  @Repository(即@Component):  用于spring容器加载相关类的

@Mapper:  mybatis为接口和sql语句创建代理对象

1.2.2  :@SpringBootApplication  (这是一个组合注解)

a 标明此类是本项目的快捷配置启动类

b 可以自动的扫描当前类所在的包以及子包中的所有的添加Component  注解的Controller,service,mapper的类

c 根据项目中的jar包自动完成必要配置

1.2.3 @Configuration  :替代xml配置

此处Configuration上为什么要有@Component注解?

  框架可以在代码中(类)完成自动配置或者自定义的配置,在这些配置类需要交给容器管理,所以需要此注解进行包的扫描

2. 整合mybatis操作数据库

1.1 大致流程

(1)添加依赖,mysql的驱动

(2)application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/db_demo1?useSSL=false&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=feng
spring.datasource.driverClassName=com.mysql.jdbc.Driver mybatis.type-aliases-package=com._51doit.pojo

此处也可以改用.yml文件

spring
  datasource
    url = jdbc:mysql://localhost:3306/db_demo?useSSL=false&characterEncoding=UTF-8
    username = root
    password = root
    driverClassName = com.mysql.jdbc.Driver

(3)Controller---->service---->mapper

controller

service

mapper

pom.xml文件

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com._51doit</groupId>
<artifactId>spring_boot</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>spring_boot Maven Webapp</name>
<url>http://maven.apache.org</url>
<!-- spring boot -->
<!-- 父級依赖 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath />
</parent>
<dependencies>
<!-- 起步依賴 spring-boot-starter-xx -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- jsp spring boot 默认不支持jsp,所以加此依赖 -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<!-- jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<scope>compile</scope>
</dependency> <!-- dao -->
<!-- mysql驱动 -->
<!-- mybatis -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency> <!--tools 自动重新启动项目 代码重新编译 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<finalName>spring_boot</finalName>
</build>
</project>

1.2 常见的配置文件

1.2.1 .xml

(1)标签的形式,层级结构,语法严谨,有约束

(2)解析方式:

a. document  对象解析,好处可以操作任意的元素,其是加在到内存中所以不能解析大文件

b. sax  逐行解析,不能操作任意的元素,可以解析大文件

1.2.2 properties

  key=value的形式

  Properties类解析

1.2.3 .yml配置文件

spring
  datasource
    url = jdbc:mysql://localhost:3306/db_demo?useSSL=false&characterEncoding=UTF-8
    username = root
    password = root
    driverClassName = com.mysql.jdbc.Driver

最新文章

  1. Python 环境搭建,开发工具,基本语法
  2. sum data
  3. CentOS 6.3下rsync服务器的安装与配置
  4. OpenERP/Odoo命令行参数
  5. careercup-树与图 4.6
  6. WWDC心愿单:新版OS X或将有这些变化
  7. 如何获得 oracle RAC 11g asm spfile S档
  8. 冬天 苹果笔记 macbook pro 消除静电的方法
  9. awk说明书(转)
  10. Django笔记--模型
  11. Tomcat8.0.11优化相关
  12. 从零开始学安全(三十一)●kali 输入 msfconsole 启动报错
  13. oradebug 10046
  14. Python全栈之路----编程基本情况介绍
  15. Windows 10 的一些快捷键
  16. poj 3903 poj 2533 (LIS模板题)
  17. spring boot+logback+JdbcTemplate打印sql日志
  18. GitHub教程手册、使用流程
  19. screen 实战后台命令执行备份
  20. 【硬件】- 英特尔CPU命名规则

热门文章

  1. docker 启动tomcat后,外部访问报HTTP Status 404 – 未找到报错解决
  2. Python正则表达式使用小记
  3. Java多线程之Atomic:原子变量与原子类
  4. celery config
  5. Android ANR从原理到日志分析,记下来就够了
  6. 解决IntelliJ IDEA的Plugins无法访问Marketplace去下载插件
  7. python -三元表达式、列表生成式、字典生成式
  8. Java安全之基于Tomcat的通用回显链
  9. 使用pmml实现跨平台部署机器学习模型
  10. 【JavaSE】字符编码和存储编码