Maven

每天读点Spring(2)--Start

August 12, 2017
Java, Spring, Maven

在本章中,作者开篇就讲到,学习一个新的开发工具最难的就是不知道从哪里入手,尤其是Spring这样有很多选择的框架。但是幸好在这本书中是简单的,下面介绍一些必要的基本知识。 这就是很人性的化的写技术书籍的方式,透露出考虑之周到。 我觉得很多时候,国内的教育体制总是要用比人家多的时间去学会一个东西。很多人看到老外中学成绩都很差,到了大学才开始学习。但是仔细想一下就会发现不太对劲,为什么人家学习的深度比我们还深呢?明明没有我们的基础好,也没有我们花费的时间多啊。 我觉得很大一部分原因是国内的教材有问题。很多教材都是非常的笼统的介绍一个东西是什么,然后就搬上一大堆理论出来证明。但是让人看了很费劲,因为我不一定就具备了看懂这个知识的基础能力,可能我要先去了解一下什么东西再来看这个会效果更好。在我看的很多国外工程师写的文档或者是书中,都有这样的设定,要么会给出在你继续往下看之前你需要去了解的知识清单,要么就直接把需要的知识写在正式内容之前。这是一个非常负责的行为,在人家眼里是很正常的事情,在我们这里可能就是不在我的工作范围中。就像初中上高中的时候,初中老师说这个你们在以后上高中就知道了,高中老师说,你们应该在初中就学过了。有些老师会讲,这些老师的学生就会很轻松的就掌握这部分东西。 不要觉得什么都要别人告诉你很low,学习就是一个这样的过程,你需要别人不断的告诉你一些东西,那些已经被解决的问题不是你主要要解决的问题,而是你要快速掌握的理论。你在学车的时候如果碰到一个什么都不教,直接让你把车开起来上路的师傅,你就会说:“如果我什么都知道还要来学嘛?”,就是这个道理。 国内很多作者纯粹就是急于求成,这些看似不是自己的责任的事情就不做,默认你会。然后把那些确实是核心的问题官方的表述一下,就算是写完了一本技术著作。很不厚道,我作为学生非常鄙视这样的人。 需要具备的知识 # 也不能算是知识,是关于Spring的一些更细节的信息,和设计。 理解Spring的包 # 这部分介绍了Spring是由哪些模块构成,你可以按照自己的需求选择使用那些模块,并介绍了每个模块的基本功能。 在Spring4.0.2发行版中一共有20个包。每个模块的包名格式如下,以aop为例:spring-aop-4.0.2.RELEASE.jar Jar File Description aop 如果你要用到AOP功能,或是你用到的Spring的其他模块用到了这个功能,你就需要把这个包添加进你的项目中 aspects 如果你用到了AspectJ AOP的功能就要包含这个包(Aspectj是Eclipse出的一个AOP的编程框架,Spring 兼容了它) bean 包含了所有用来实现Spring控制bean的类,其中很多类也都支持Spring的bean工程模式,例如解析xml和注解的类 context 这个包给Spring core提供了很多扩展能力,Spring的很多功能都依赖于此,并且实现交互的脚本语言也是集成在其中的 context-support 这个包有扩展了context的功能,例如邮件支持、模板引擎例如Velocity、FreeMaker,此外还有很多作业的执行和调度,例如CommonJ(计时器)和Quartz(作业调度)都打包在这里。 core 这是你必须包含的包,其中的类被用在很多其他的包中,并且有一些全局工具你也可以用在自己的代码中 expression 这个包是支持Spring Expression Language的,是一种强大而简洁的装配Bean的方式 instrument 这个模块包括Java虚拟机的引导(翻译有待确认)?当你在使用AspectJ时需要使用这个包 instrument-tomcat JVM Bootstrapping in the tomcat-server jdbc 数据库链接操作相关 messaging 是基于消息的应用相关的,以及支持STOMP消息文本协议 orm 扩展了JDBC,支持ORM框架,诸如Hibernate、JDO、JPA oxm 支持Object/XML Mapping (OXM) test 提供了强大的单元测试的功能,紧密集成了JUnit tx 支持分布式事物操作 web web功能的核心,支持了文件上传,参数解析等 web-mvc 支持MVC模式的web web-portlet 门户网站服务器部署支持(Not know) websocket 支持Java API for WebSocket(Not know) 随后讲了你可以用maven获取这些,就像你不知道maven一样 ...

Maven

July 2, 2017
Java, Maven, Web

使用maven已经是不可避免的事情了,如果你是个java工程师的话。并且,使用maven基本上是你最好的选择。但是我并不喜欢用IDE来集成maven,这算是强迫症,命令行强迫症。 Maven 是什么? # 传说他的功能十分强大,目前我感受到的是如下几个功能: 自动构建项目结构,根据不同的框架需求 自动包依赖管理 自动编译工程 自动启动测试 总而言之就是恰到好处的做了你觉得很麻烦又没有必要自己做的事情。 安装 # 跟JDK是一个思路的,在环境变量中添加M2_HOME即可。 使用 # # 创建Java Web 项目 mvn archetype:generate -DgroupId=com.hello -DartifactId=hello -DarchetypeArtifactId=maven-archetype-webapp # 生成项目 mvn install # 发布到tomcat # 复制生成的./target/xxx.war到tomcat目录下的webapps中去,如果不能访问就重启一下tomcat。 上述是将项目自带的helloworld页面显示出来,我们自己使用会用到一个更核心的方法–配置文件。 pom.xml # 这个配置文件是maven的核心。 在创建好的文件夹中有一个pom.xml 这里的内容分成两部分,一部分是你的项目基本信心,叫啥,啥版本的等等;还有一部分是我们要配置的部分。这一部分又分成好几部分,有依赖关系(dependencies)、生成(build)等等。 下面是一个Maven的基本结构 <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> <!-- The Basics --> <groupId>...</groupId> <artifactId>...</artifactId> <version>...</version> <packaging>...</packaging> <dependencies>...</dependencies> <parent>...</parent> <dependencyManagement>...</dependencyManagement> <modules>...</modules> <properties>...</properties> <!-- Build Settings --> <build>...</build> <reporting>...</reporting> <!-- More Project Information --> <name>...</name> <description>. ...