Java学习笔记

本文详细介绍了Java的学习笔记,涵盖了从安装JDK、Maven的使用到数据库连接池的原理,再到深入的Maven配置、插件管理和项目构建。接着讲解了Java语法基础,包括窗体、JUnit测试和Mock对象。进一步探讨了Spring Framework,详细阐述了IOC容器、AOP编程、Spring Boot项目构建和RESTful API、单元测试等方面。文章提供了丰富的实例和操作指南,适合Java初学者和进阶开发者阅读。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java学习笔记

安装

安装JDK、

设置环境变量:

JAVA_HOME = D:\Android\Java\jdk1.8.0_25

CLASSPATH = .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

PATH=%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

开源网站:www.sourceforge.net

Shift + Alt + s :可以调出重构界面,可以生成实体类

安装TomCat

CATALINA_HOME = 路径

默认访问地址:http://localhost:8080

Java导入普通Web项目

Project Facets:Dynamic - Java - JavaScript

Deployment Assembly:WebRoot

 

Maven使用

新建项目:mvn archetype:generate

groupid:项目标识(com.chenxy.demo)

artifactId:项目名称(maven_demo)

pom.xml:定义项目基础模型

打包: mvn package 会生成jar包。生成在target文件夹里有jar包

执行jar包:java -cp .\mvndemo-1.0-SNAPSHOT.jar com.chenxy.App

Eclipse设置Maven存储库:Windows->Preferences->Maven->Installations添加Maven指向。Maven->User Settings 选择Maven->conf->setting.xml

设置Maven-JDK:Windows->Preferences->Java->Installed ->Execution。选择

安装Eclipse插件

Help->Eclipse Marketplace -> 输入Maven -> 安装Maven Intergration for Eclipse

设置Maven仓库地址

Windows->Preferences->Maven->Installations->Add选择地址

Windows->Preferences->Maven->User Setting->Add选择地址

引入Maven项目

import -> Maven -> Existing Maven Project 

新建项目

New -> Maven -> Maven Project -> Next -> Filter选择maven.archetype-quickstart

打包项目

Maven Build -> Goals输入package

数据库连接池

思想:自己维护一些列数据库链接,需要使用时直接使用其中一个,用完了复用不用销毁

目前常见技术是:proxool、DBCP、C3PO

proxool是一种JAVA数据库链接技术,sourceforge下的一个开源项目,提供一个健壮、易用的连接池,提供监控功能,方便易用,便于发现泄露的情况

Maven

Apache Maven是一个软件项目管理和理解工具。基于项目对象模型的概念,Maven可以生成一个中心信息管理项目的构建,报告和文档。

安装

下载Maven后,添加环境变量即可

运行

运行Maven的语法如下

mvn [options] [<goal(s)>] [<phase(s)>]

所有可用选项都记录在您可以访问的内置帮助中

mvn -h

构建Maven项目的典型调用使用Maven生命周期阶段,打包完成后就可以直接调用了

mvn package

mvn package && java -jar target/demo-0.0.1-SNAPSHOT.jar

告诉Maven构建所有模块,并检查所有集成测试是否成功。

只需要创建包并将其安装在本地存储库中,即可从其他项目中重复使用

mvn verify

当不使用项目时,以及在其他一些用例中,可能希望调用由Maven的一部分实现的特定任务,这称为插件的目标

mvn archetype:generate

mvn checkstyle:check

配置插件指南

Maven中,有构建和报告插件

构建期间将执行构建插件,然后在<build>元素中配置它们。

报告插件将在站点生成期间执行,并且应在<reporting>元素中配置。

所有插件都必需信息:groupId,artifactId,version

建议始终定义构建使用的每个插件版本,以保证构建的可重现性。推荐做法是在每个构建插件的build中指定它们。对于报告插件,应该在reporting中指定每个版本

通用配置

使用<executions>

常用于在参与构建生命周期的某些阶段的配置。 

如果目标具有默认阶段绑定,则它将在该阶段执行。如果没有绑定多任何生命周期阶段,那么它就不会在构建生命周期中执行。

如果有多个绑定到不同阶段的执行,则对于指示的每一个阶段执行一次。

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-myquery-plugin</artifactId>
        <version>1.0</version>
        <executions>
          <execution>
            <id>execution1</id>
            <phase>test</phase>
            <configuration>
              <url>http://www.foo.com/query</url>
              <timeout>10</timeout>
              <options>
                <option>one</option>
                <option>two</option>
                <option>three</option>
              </options>
            </configuration>
            <goals>
              <goal>query</goal>
            </goals>
          </execution>
          <execution>
            <id>execution2</id>
            <configuration>
              <url>http://www.bar.com/query</url>
              <timeout>15</timeout>
              <options>
                <option>four</option>
                <option>five</option>
                <option>six</option>
              </options>
            </configuration>
            <goals>
              <goal>query</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  ...
</project>
View Code

使用<dependencies>

配置Build插件的依赖项,通常使用更新的依赖项版本。整个项目所需要的jar包

例如:Maven Antrun插件版本1.2使用Ant版本1.65,如果想在运行此插件时使用最新的Ant版本,则需要添加<dependencies>元素

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.2</version>
        ...
        <dependencies>
          <dependency>
            <groupId>org.apache.ant</groupId>
            <artifactId>ant</artifactId>
            <version>1.7.1</version>
          </dependency>
          <dependency>
            <groupId>org.apache.ant</groupId>
            <artifactId>ant-launcher</artifactId>
            <version>1.7.1</version>
          </dependency>
         </dependencies>
      </plugin>
    </plugins>
  </build>
  ...
</project>
View Code

使用<inherited>

默认情况下,插件配置应该传播到子POM,因此要中断继承,可以使用inherited标记

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.2</version>
        <inherited>false</inherited>
        ...
      </plugin>
    </plugins>
  </build>
  ...
</project>
View Code

创建项目

如果需要在某个地方创建项目,需要创建一个目录了并在该目录中启动一个sheel。执行下面的命令

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

首次安装Maven,会有点慢因为会更新jar包和其他文件到本地存储库中。

POM

pom.xml的文件是Maven中项目的配置核心。它是一个单一的配置文件,包含以您希望的方式构建项目所需的大部分信息。POM是巨大的,其复杂度很高,但没有必要了解所有

<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.mvndemo.app</groupId>
  <artifactId>maven-app</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>maven-app</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

project:所有Maven pom.xml文件中的顶级元素。

modelVersion:元素指示此POM使用的对象模型的版本。

groupId:元素指示创建项目的组织或组的唯一标识符。关键标识符之一,通常基于组织的完全限定域名

artifactld:元素指示此项目生成的唯一基本名称。项目的主要生成是JAR文件。

version:生成项目的版本

packaging:指项目主要使用的包的类型(例如JAR、WAR等)还可以指示要在构建过程中使用的特定的生命周期

name:项目显示名称,通常用于Maven生成的文档中

url:项目站点位置,通常用于Maven生成的文档中

description:项目的基本描述,通常用于Maven生成的文档中

完整描述参考:https://maven.apache.org/ref/3.5.4/maven-model/maven.html

打包项目

mvn package

构建生命周期的阶段,Maven将执行序列中每个阶段

  1. 验证
  2. 产生来源
  3. 流程源
  4. 生成资源
  5. 流程资源
  6. 编译

打包完成后可以使用java命令进行测试

java -cp target/maven-app-1.0-SNAPSHOT.jar com.mvndemo.app.App

Maven阶段

默认生命周期阶段

  • validate: 验证项目是否正确并且所有必要的信息都可用
  • compile:编译项目的源代码
  • test:使用合适的单元测试框架测试编译的源代码
  • package:获取已编译的代码并将其打包为可分发的格式,例如JAR
  • integration-test:将程序包处理并部署到可以运行集成测试的环境中
  • verify:运行任何检查以验证包是否有效并符合质量标准
  • install:将软件包安装到本地存储库
  • deploy:在集成或发布环境中完成,将最终包赋值到远程存储库
  • clean:清楚先前构建创建的工作
  • site:为该项目生成站点文档

阶段实际上映射到基本目标。每个阶段执行的具体目标取决于项目的包装类型

mvn clean dependency:copy-dependencies package

此命令将清理项目,复制依赖项并打包项目

mvn clean compile

清理输出目录target/

mvn site

生成信息站点

编译应用程序

mvn compile  编译Maven项目

第一次执行命令时,需要下载所有插件和依赖项。再次执行,不需要下载。

编译后的类放在target/class中。

运行单元测试

mvn test  运行

mvn test-compile 编译不运行

SNAPSHOT版本

pom.xml文件中version标记的后缀:-SNAPSHOT。该值指的是沿着一个发展分支的最新代码,并且不保证该代码是稳定的或不变的。发布版本中没有这个后缀都是不变的。

也就是开发版本的意思

添加JAR包到资源

通过使用标准的Maven约定,可以简单的将资源放在目录结构中封装JAR包

my-app
|-- pom.xml
`-- src
    |-- main
    |   |-- java
    |   |   `-- com
    |   |       `-- mycompany
    |   |           `-- app
    |   |               `-- App.java
    |   `-- resources
    |       `-- META-INF
    |           `-- application.properties
    `-- test
        `-- java
            `-- com
                `-- mycompany
                    `-- app
                        `-- AppTest.java

上面示例中我们添加了目录${basedir}/src/main/resources,将要包装的任何资源放入JAR包中。Maven采用的简单规则是:${basedir}/src/main/resources目录下的任何目录或文件都打包在JAR中,其结构与JAR基础相同。

文件结构示例中,我们在该目录中有一个带有application.properties文件的META-INF目录。

|-- META-INF
|   |-- MANIFEST.MF
|   |-- application.properties
|   `-- maven
|       `-- com.mycompany.app
|           `-- my-app
|               |-- pom.properties
|               `-- pom.xml
`-- com
    `-- mycompany
        `-- app
            `-- App.class

application.properties文件位于META-INF目录中。还会注意到其他一些文件,如META-INF/MAINFEST.MF以及pom.xml和pom.properties文件。这些标准在Maven中生成JAR的标准。

可以创建自己的清单,但如果不这样做,Maven将生成默认的清单。

在POM文件上操作需要使用一些Maven实用程序,但可以使用标准的Java API来使用这些属性

#Generated by Maven
#Tue Oct 04 15:43:21 GMT-05:00 2005
version=1.0-SNAPSHOT
groupId=com.mycompany.app
artifactId=my-app

将资源添加到单元测试的类路径中,将遵循与JAR添加资源相同的模式,除了放置资源的目录是${basedir}/src/main/resources。此时将拥有一个项目目录结构

my-app
|-- pom.xml
`-- src
    |-- main
    |   |-- java
    |   |   `-- com
    |   |       `-- mycompany
    |   |           `-- app
    |   |               `-- App.java
    |   `-- resources
    |       `-- META-INF
    |           |-- application.properties
    `-- test
        |-- java
        |   `-- com
        |       `-- mycompany
        |           `-- app
        |               `-- AppTest.java
        `-- resources
            `-- test.properties

单元测试中,可以使用下面所示的简单代码片段来访问测试所需的资源

InputStream is = getClass().getResourceAsStream( "/test.properties" );

过滤资源文件

资源文件需要包含只能在构建时提供的值。使用语法${<property name>}将包含值的属性引用到资源文件中。该属性可以是pom.xml中定义的值之一,用户settings.xml中定义的值,外部属性文件中定义的属性或系统属性。

在复制时让Maven过滤资源,给pom.xml中的资源目录设置 filtering 为true

<build>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
    </resources>
  </build>

使用外部依赖项

pom中 dependencies部分列出了我们项目构建所需的所有外部依赖项。比如下面代码

<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
 
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>
 
  <name>Maven Quick Start Archetype</name>
  <url>http://maven.apache.org</url>
 
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

对于每个外部依赖项,至少需要4个内容:groupId,artifactid,version,scope。

groupId和artifactId,version需要与项目给出的相同。scope元素指示项目如何使用该依赖项,可以是compile,test,runtime之类的值。

Maven会在构建项目时引用依赖关系,查找本地存储库以查找所有依赖项。所以可以将项目安装到本地存储库。然后另一个项目就可以通过依赖关系添加到pom.xml来引用该jar包

<dependency>
      <groupId>com.mycompany.app</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值