maven中整合Spring+hibernate的pom.xml文件的配置

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"> 4.0.0 parentwenjuan wenjuan 0.0.1-SNAPSHOT war wenjuan

3.0.5.RELEASEn> 1.2.16

org.hibernate hibernate-core 3.3.0.CR2 org.slf4j slf4j-api org.hibernate hibernate-entitymanagertId> 3.3.2.GA org.hibernate hibernate-annotationsd> 3.3.0.ga

org.springframework spring-orm ${spring.version}

net.sf.ezmorph ezmorph 1.0.6 commons-collections commons-collections 3.2.1

commons-beanutils commons-beanutils 1.9.2 net.sf.json-lib json-lib 2.4 jdk15

org.springframework spring-jdbc ${spring.version} org.springframework spring-core ${spring.version} commons-logging commons-logging

org.springframework spring-test ${spring.version} test commons-logging commons-logging org.springframework spring-context ${spring.version}

org.springframeworkoupId> spring-aop ${spring.version}

org.springframeworkoupId> spring-aspects ${spring.version}

org.springframeworkoupId> spring-tx ${spring.version}

commons-logging> commons-logging

org.springframework spring-webmvc ${spring.version}

commons-logging> commons-logging log4j log4j ${log4j.version}

commons-loggingd> commons-logging 1.0.4

javax.servlet servlet-api

javax.servlet jstl 1.2

合集下载

SpringMVC+Spring+Hibernate框架整合原理,作用及使用方法

SpringMVC+Spring+Hibernate框架整合原理,作用及使用方法

SpringMVC+Spring+Hibernate框架整合原理,作⽤及使⽤⽅法SSM框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层四层使⽤spring MVC负责请求的转发和视图管理spring实现业务对象管理,mybatis作为数据对象的持久化引擎原理:SpringMVC:1.客户端发送请求到DispacherServlet(分发器)2.由DispacherServlet控制器查询HanderMapping,找到处理请求的Controller3.Controller调⽤业务逻辑处理后,返回ModelAndView4.DispacherSerclet查询视图解析器,找到ModelAndView指定的视图5.视图负责将结果显⽰到客户端Spring:我们平时开发接触最多的估计就是IOC容器,它可以装载bean(也就是我们中的类,当然也包括service dao⾥⾯的),有了这个机制,我们就不⽤在每次使⽤这个类的时候为它初始化,很少看到关键字new。

另外spring的aop,事务管理等等都是我们经常⽤到的。

Mybatis:mybatis是对jdbc的封装,它让数据库底层操作变的透明。

mybatis的操作都是围绕⼀个sqlSessionFactory实例展开的。

mybatis通过配置⽂件关联到各实体类的Mapper⽂件,Mapper⽂件中配置了每个类对数据库所需进⾏的sql语句映射。

在每次与数据库交互时,通过sqlSessionFactory拿到⼀个sqlSession,再执⾏sql命令。

使⽤⽅法:要完成⼀个功能:1. 先写实体类entity,定义对象的属性,(可以参照数据库中表的字段来设置,数据库的设计应该在所有编码开始之前)。

2. 写Mapper.xml(Mybatis),其中定义你的功能,对应要对数据库进⾏的那些操作,⽐如 insert、selectAll、selectByKey、delete、update等。

Mavenpom.xml详解

Mavenpom.xml详解

Mavenpom.xml详解⼀、pom 简介POM 是项⽬对象模型 (Project Object Model) 的简称, XML 格式,名称为 pom.xml ,它是 Maven 项⽬的核⼼配置⽂件,该⽂件⽤于管理源代码、配置⽂件、开发者的信息和⾓⾊、问题追踪系统、组织信息、项⽬授权、项⽬的url、项⽬的依赖关系等等.事实上,在 Maven 的世界中,⼀个项⽬可以什么都没有,甚⾄没有代码,但是必须包含 pom.xml ⽂件.并且⼀个 Maven 项⽬有且只有⼀个 pom.xml ⽂件,该⽂件必须在项⽬的根⽬录下.⼆、pom.xml 完整结构<project xmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0/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>...</description><url>...</url><inceptionYear>...</inceptionYear><licenses>...</licenses><organization>...</organization><developers>...</developers><contributors>...</contributors><!-- 环境设置 Environment Settings --><issueManagement>...</issueManagement><ciManagement>...</ciManagement><mailingLists>...</mailingLists><scm>...</scm><prerequisites>...</prerequisites><repositories>...</repositories><pluginRepositories>...</pluginRepositories><distributionManagement>...</distributionManagement><profiles>...</profiles></project>我们这⾥就选择⼀些⽐较常⽤的配置来说三、pom 常⽤配置1、坐标坐标是⼀个项⽬的唯⼀标识符,可以通过坐标准确的定位到某⼀个具体的项⽬.有了坐标进⾏定位之后,如果其它的 Maven 项⽬想使⽤该项⽬⽣成的 jar 包,只需要通过坐标引⼊依赖即可Maven 坐标是通过 groupId、artifactId、version 来共同定位的.groupId: 组织 Id ,表⽰当前模块所⾪属的项⽬.起名规范:⼀级域名(com、org).⼆级域名(公司名称).项⽬名称artifactId: 模块 Id, 表⽰⼀个项⽬中的某个模块,例如商城项⽬⾥⾯的订单模块、⽤户模块、商品模块...等等version:当前的版本为什么坐标需要三个元素才能定位呢?⽐如你⾃⼰的项⽬中需要使⽤某⼀个 jar 包,那么怎么找到这个 jar 包呢?这个时候你就需要使⽤ groupId 来定位这个 jar 包是属于哪个公司的哪个项⽬,定位到了项⽬之后呢,你还需要使⽤ artifactId 定位到该项⽬的具体模块,因为⼀个项⽬可以有很多的模块,定位到了具体模块之后呢,还需要使⽤ version 来定位具体的版本号,因为⼀个模块可以进⾏迭代,如果不指定具体的版本号也就⽆法准确的定位,这个类似于地理⾥⾯只有通过东经和北纬才能准确定位⼀个地理位置⼀样.<!-- 组织 Id --><groupId>com.xiaomaomao.springAnalyse</groupId><!-- 模块 Id --><artifactId>spring-ioc</artifactId><!-- 具体的版本号 --><version>1.0-SNAPSHOT</version>2、全局变量 propertiesproperties: 全局属性,⼀般情况下⽤于定义全局的 jar 包版本.仅仅是定义全局变量,不起其他作⽤.应⽤场景:在实际项⽬中如果我们使⽤同⼀个公司的 jar 包, jar 包的版本号最好是保持⼀致,因为有时候 jar 包版本不⼀致的情况下,有可能会出现不同版本之间发⽣不兼容的错误, 我们这⾥就以 spring 为例,下⾯的这些依赖当中 spring-context、spring-webmvc 都是属于 spring 的 jar 包,并且它们的版本号都是 4.3.11.RELEASE,突然有⼀天,项⽬经理兴奋的告诉我,spring 推出了 5.0 版本,功能很强⼤,我们要升级版本,那么这个时候你就只能挨个的找到 spring 相关的依赖,⼀个⼀个的把它们升级到 5.0 版本,我们这⾥仅仅只有两个 spring 相关的依赖,改起来⽐较快,可是如果你的项⽬⾥⾯使⽤了⼏⼗个,甚⾄上百个 spring 的依赖呢?这个时候你挨个挨个的去替换,⼯作量⽐较⼤,并且还有可能⼀不留神改错了,好不容易改完了,也没有改错,终于可以休息⼀下了,这个时候项⽬经理那个糟⽼头⼦⼜来了,他告诉你 spring 5.0 有版本缺陷,我们还是改回原来的 4.3.11.RELEASE 版本吧,我想此时你是奔溃的,你就只能挨个挨个的将 spring 的依赖 jar 包⼀个⼀个的还原,好了,还原了,也改好了,终于没事了,你冷不丁的冒出⼀个念头,万⼀项⽬经理⼜要我切换成其它的版本,⼯作量太⼤了,有没有什么⽐较好的办法呢?答案是有的,我们就可以通过 properties 标签来统⼀管理 jar 包的版本<dependencies><!-- spring 基本依赖 --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.3.11.RELEASE</version></dependency><!-- spring-webmvc 依赖 --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.3.11.RELEASE</version></dependency><!-- juint 依赖 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><!-- servlet-api 依赖 --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.0</version><scope>provided</scope></dependency></dependencies>在 <properties> 标签中定义⼀类 jar 包的版本,引⼊依赖的时候通过 ${标签名} 的⽅式来控制版本<properties><!--标签名称任意,但是最好是⼀个有意义的名称--><spring-version>4.3.11.RELEASE</spring-version><junit-version>4.11</junit-version><javax.servlet-version>4.0.0</javax.servlet-version></properties><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><!--使⽤ ${⾃定义的标签} 来引⼊ properties 中定义的标签⾥⾯的值--><version>${spring-version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring-version}</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit-version}</version><scope>test</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>${javax.servlet-version}</version><scope>provided</scope></dependency></dependencies>如果以后想统⼀切换 spring、junit 等 jar 包的版本,我们只需要在 properties 标签中切换就可以了,再也不⽤去依赖中挨个挨个的替换 jar 包的版本了3、dependencydependency 标签统⼀的定义在 dependencies 标签中,它代表的意思是我们可以通过该标签引⼊我们需要的相关 jar 包3.1、如何查找⼀个 jar 包的地址?Maven 依赖官⽹:3.1.1、进⼊官⽹,查找需要的 jar 包3.1.2、选择 jar 包版本3.1.3、复制依赖到项⽬ pom.xml 中3.2、如何查看引⼊的依赖4、依赖的 scope 作⽤域依赖的 scope 标签表⽰的意思是依赖的使⽤范围(也就是这个 jar 包在什么范围内是可以使⽤的),scope 的取值有 compile、test、provided、runtime、system 4.1、compile该依赖可以在整个项⽬中使⽤(是指代码范围, main ⽬录和 test ⽬录下都能使⽤这个依赖),参与打包部署.是 scope 的默认值.典型的例如: commons f ileupload 例如:我们修改 spring 核⼼依赖 spring-context 的 scope 为 test<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring-version}</version><scope>test</scope></dependency>在 main ⽬录下使⽤就出现了报错在 test ⽬录下使⽤就是正常的4.2、test该依赖只能在测试代码中使⽤(是指代码范围,只能在 test ⽬录下使⽤这个依赖),不参与打包部署.典型的例如: junit4.3、provided该依赖编写源代码时需要使⽤,因为当我们使⽤ Servlet 的时候,如果不添加 javax.servlet-api 依赖,就⽆法使⽤⾥⾯相关的 API,如果使⽤了编译就会报错,provided 不参与打包部署.只是在编写源码的时候使⽤,为什么不参与打包部署呢?因为我们的项⽬打包部署到服务器的时候,服务器会为我们提供 javax.servlet-api ,这⾥以 tomcat 为例,找到 tomcat 的安装⽬录,打开⾥⾯的 lib ⽬录,在 tomcat 容器启动的时候会为我们提供 servlet-api.jar ,那么我们项⽬中的 pom.xml 中就不需要再提供 servlet-api 这个依赖了4.4、runtime该依赖编写代码时不需要,运⾏时需要,参与打包部署.典型的例如数据库驱动 mysql-connector-java<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.20</version></dependency>为什么编写代码时不需要呢?jvm 运⾏期的时候通过反射加载数据库驱动,完成例如注册驱动、获取连接、获取 PrepareStatement 对象等,我们编写代码的时候只是在编译期间,根本不会使⽤到数据库驱动,项⽬最终打包部署的时候也是需要数据驱动的,否则你⽆法连接数据库和操作 Sql 语句.4.5、system表⽰使⽤本地系统路径下的 jar 包,需要和 systemPath 配合使⽤,典型的例如 Oracle 数据库驱动: ojdbc.jar ,它是未授权 Maven 中央仓库的(刚刚去 Maven 中央仓库发现有,但是我们就假设它没有被Maven 中央仓库录⼊)有些 jar 包可能因为授权的问题或者是⼀些个⼈的 jar 包,这些 jar 包不会被 Maven 中央仓库录⼊,这个时候如果我们想在项⽬中使⽤这些 jar 包的话,我们可以先将 jar 包下载先来,然后可以在 pom.xml 中配置指向本地某个 jar 包的路径,引⼊相关的 jar 包对主程序是否有效对测试程序是否有效是否参与打包是否参与部署典型例⼦compile 是是是是spring-context test 否是否否junit provided 是是否否servlet-api 、jsp-api runtime 否否是是mysql-connector-java system -----引⼊ Oracle 驱动之后就可以使⽤了,没有出现报错其实吧,我觉得如果某些 jar 包 Maven 中央仓库没有录⼊,我们可以将需要的 jar 包下载下来,然后上传到私服中,通过左边从私服中下载就可以了.这⾥总结⼀下 scope 依赖范围4.6、远程仓库 repositoriesrepositories:⽤来配置当前⼯程使⽤的远程仓库依赖查找顺序:本地仓库--->当前⼯程 pom.xml 中配置的远程仓库--->⽤户级别的 settings.xml 中配置的远程仓库----> 全局 settings.xml 中配置的远程仓库---->Maven 中央仓库应⽤场景:如果有些 jar 包在 Maven 中央仓库没有,但是在其他仓库(例如:阿⾥仓库、spring 仓库、mybatis 仓库)⾥是有这个 jar 包的,例如 spring 新发布了⼀个版本,由于是刚发⾏的版本,性能不太稳定,这个时候Maven 中央仓库⼀般不会将这些 jar 包录⼊,但是你就是想⽤ spring 最新的版本,那么可以在 pom.xml 中通过配置 repositories 从指定的某公司官⽅仓库来获取相应的 jar 包<repositories><!-- 配置 spring 官⽅仓库 --><repository><!-- 远程仓库唯⼀标识符 --><id>spring_repo</id><!-- 仓库名称,可以使⽤⼀个有意义的名称命名 --><name>Private Repository</name><!-- spring 官⽅远程仓库地址 --><url>http://repo.spring.io/milestone</url><!-- ⽤于定位和排序构件的仓库布局类型,它的取值有 default(默认)或 legacy(遗留) --><layout>default</layout><releases><!-- 是否开启 release 或者 snapshots 的下载⽀持.默认值为 false ,表⽰不会从该中央仓库下载快照版本的构件 --><enabled>true</enabled><!-- ⽤来配置 Maven 从远程仓库检查更新的频率,默认是 daily,表⽰每天检查⼀次;never: 从不检查更新;always: 每次构建都检查更新;interval:X 每隔 X 分钟检查⼀次更新 --><updatePolicy>always</updatePolicy><!--⽤来配置 Maven 检查检验和⽂件的策略,当构建被部署到Maven 仓库中时,会同时部署对于应⽤的检验和⽂件,在下载构件的时候, Maven 会验证校验和⽂件checksumPolicy 默认值是 warn ,会执⾏构建时输出警告信息fail :遇到校验和错误就构件失败ignore :完全忽略校验和错误 --><checksumPolicy>warn</checksumPolicy></releases><snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots></repository><!-- 配置 阿⾥ 官⽅远程仓库 --><repository><id>alimaven</id><name>aliyun maven</name><url>/nexus/content/groups/public/</url></repository></repositories>4.7、插件 plugins插件,就是⼀种⼯具.常见的如:清理插件 maven c lean p lugin ,编译插件 maven c ompile p lugin插件和依赖的区别:插件是⼯具,偏向于开发环境.和项⽬功能、源码、打包好的 jar 包没有任何关系.插件和依赖的关系,类似于 IDEA ⼯具和上线的 jar 包.Maven 的核⼼⽂件很⼩,主要的任务都是由插件来完成.定位到:%本地仓库%\org\apache\maven\plugins ,可以看到⼀些下载好的插件4.7.1、插件的⽬标 (Plugin Goals)⼀个插件通常可以完成多个任务,每⼀个任务就叫做插件的⼀个⽬标.如执⾏ mvn install 命令时,调⽤的插件和执⾏的插件⽬标如下4.7.2、将插件绑定到⽣命周期Maven 的⽣命周期是抽象的,实际需要插件来完成任务,这⼀过程是通过将插件的⽬标 (goal) 绑定到⽣命周期的具体阶段 (phase) 来完成的.例如将 maven-compiler-plugin 插件的 compile ⽬标绑定到 default ⽣命周期的 compile 阶段,完成项⽬的源代码编译.Maven 对⼀些⽣命周期的阶段(phase)默认绑定了插件⽬标,因为不同的项⽬有 jar、war、pom 等不同的打包⽅式,因此对应的有不同的绑定关系,其中针对 default ⽣命周期的 jar 包打包⽅式的绑定关系如下第⼆列中,冒号后⾯即是绑定的插件⽬标,冒号前⾯是插件的前缀(prefix),是配置和使⽤插件的⼀种简化⽅式.4.7.3、⾃定义绑定⽤户可以根据需要将任何插件⽬标绑定到任何⽣命周期的阶段, 例如将 maven-source-plugin 的 jar-no-fork ⽬标绑定到 default ⽣命周期的 package 阶段, 这样,以后在执⾏ mvn package 命令打包项⽬时,在 package 阶段之后会执⾏源代码打包,⽣成如 ehcache-core-2.5.0-sources.jar 形式的源码包.<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>2.2.1</version><executions><execution><id>attach-source</id><!-- 要绑定到的⽣命周期的阶段 --><phase>package</phase><goals><!-- 要绑定的插件的⽬标 --><goal>jar-no-fork</goal></goals></execution></executions></plugin></plugins>……</build>4.7.4、pom.xml 中配置插件<build><plugins><plugin><!-- 在这⾥添加 clean 插件,可以替换掉之前插件的版本 --><groupId>org.apache.maven.plugins</groupId><artifactId>maven-clean-plugin</artifactId><version>3.0.0</version></plugin><plugin><!-- ⼀般 web 项⽬需要添加⼀个 tomcat 插件 --><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><!-- 这⾥还可以配置 tomcat 的项⽬访问 URL 和项⽬访问端⼝ --><configuration><path>/xiaomaomao</path><port>8888</port></configuration></plugin></plugins></build>这⾥有个很奇怪的现象,我使⽤ IDEA 帮我创建 Web 项⽬, IDEA ⾃动帮我下载了插件,其中 maven-clean-plugin 插件的版本是 3.1.0 ,我这⾥把插件的版本替换成了 3.0.0然后看⼀下我们加⼊的 maven-tomcat 插件五、超级 pom当我们利⽤ IDEA 为我们创建⼯程的时候,我们没有进⾏任何配置,为什么能下载各种插件呢?这是由于存在超级 pom 的原因,所有的 Maven 项⽬都要继承超级 pom,⾥⾯有 Maven 默认的⼀些配置超级 pom 存放位置: Maven 的安装⽬录\bin\maven-model-builder-3.6.0.jar\org\apache\maven\model\pom-4.0.0.xml解压开 maven-model-builder-3.6.0.jar 这个压缩包,⾥⾯有两个⽬录在 org/apache/maven/model/ ⽬录下有⼀个 pom-4.0.0.xml ,这个 pom 就是超级 pom ,例如⾥⾯就配置了相关的仓库信息。

Maven pom.xml常用配置解析

Maven pom.xml常用配置解析
modules
作为本项目一部分的模块(子项目)。
repositories
依赖项和扩展项的远程仓库。
pluginRepositories
构建所需插件的远程仓库。
dependencies
此项目的所有依赖项列表。这些依赖项在构建过程中用于构造所需的classpath。这些依赖项在构建时会自动下载。
reports
issueManagement
描述此项目的发布管理系统信息
ciManagement
此项目的持续集成信息
inceptionYear
此项目开始年份,用四位整数指定。当产生版权信息时使用
mailingLists
项目的邮件列表信息
developers
项目的开发小组
contributors
项目的贡献者,但不属于开发小组
Deprecated。Maven现在忽略此元素。
reporting
此元素包含用于在Maven产生的项目站点中产生报表的插件的规格。这些报表在执行mvn site命令时运行,所有报表出现在导航条上。
dependencyManagement
所有项目的依赖信息继承于此。这一节中的依赖项并不马上解析。事实上,当一个继承于此的POM使用groupId和artifactId定义一个依赖项时,当版本信息和其他信息没有指定时,才会使用这里的依赖项定义。
distributionManagement
此项目的分发信息。
properties
在POM可以用作替代,以及用于资源过滤。
2、parent
artifactId
父项目的artifact标识符
groupId
父项目的group标识符
version

Spring配置文件集成Hibernate配置文件

Spring配置文件集成Hibernate配置文件

Spring配置⽂件集成Hibernate配置⽂件Spring对hibernate配置⽂件hibernate.cfg.xml的集成,来取代hibernate.cfg.xml的配置。

spring对hibernate配置⽂件hibernate.cfg.xml的集成相当好,可以在Spring中配置Hibernate的SessionFactory从⽽取代Hibernate.cfg.xml和HibernateSessionFactory.javaSpring在集成Hibernate时⼜分为两种形式:1、继续使⽤Hibernate的映射⽂件*.hbm.xml2、使⽤jpa注解形式的pojo对象,⽽去掉*.hbm.xml的Hibernate映射⽂件⾸先要引⼊jar包⼀.继续使⽤Hibernate的映射⽂件*.hbm.xml<!-- 定义dbcp数据源 --><bean id="dataSource" class="mons.dbcp.BasicDataSource"><!-- 指定jdbc驱动 --><property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property><!-- 连接数据库的url地址 --><property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"></property><!-- 连接数据的⽤户名和密码 --><property name="username" value="hyj"></property><property name="password" value="123"></property></bean><!-- 定义sessionFactory --><bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><!-- 为LocalSessionFactoryBean注⼊定义好的数据源 --><property name="dataSource"><ref bean="dataSource"/></property><!--添加hibernate配置参数 --><property name="hibernateProperties"><props><!-- 每个数据库都有其对应的Dialect以匹配其平台特性 --><prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop><!-- 是否将运⾏期⽣成的sql输出到⽇志以供调试 --><prop key="hibernate.show_sql">true</prop><!-- 是否格式化sql --><prop key="hibernate.format_sql">true</prop><prop key="hibernate.hbm2ddl.auto">update</prop></props></property><!-- 添加对象关系映射 --><property name="mappingResources"><list><value>classpath:cn/entity/User.hbm.xml</value></list></property></bean>⼆.使⽤jpa注解形式的pojo对象,⽽去掉*.hbm.xml的Hibernate映射⽂件这⾥需要注意的就是1.spring中配置SessionFactory bean时它对应的class应为org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean2.AnnotationSessionFactoryBean中查找jpa注解形式的pojo映射对象的属性有:annotatedClasses、packagesToScan① annotatedClasses:指定classpath下指定的注解映射实体类的类名② packagesToScan指定映射⽂件的包名<!-- 定义dbcp数据源 --><bean id="dataSource" class="mons.dbcp.BasicDataSource"><!-- 指定jdbc驱动 --><property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property><!-- 连接数据库的url地址 --><property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"></property><!-- 连接数据的⽤户名和密码 --><property name="username" value="hyj"></property><property name="password" value="123"></property></bean><!-- 定义sessionFactory --><bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"><!-- 为LocalSessionFactoryBean注⼊定义好的数据源 --><property name="dataSource"><ref bean="dataSource"/></property><!--添加hibernate配置参数 --><property name="hibernateProperties"><props><!-- 每个数据库都有其对应的Dialect以匹配其平台特性 --><prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop><!-- 是否将运⾏期⽣成的sql输出到⽇志以供调试 --><prop key="hibernate.show_sql">true</prop><!-- 是否格式化sql --><prop key="hibernate.format_sql">true</prop><prop key="hibernate.hbm2ddl.auto">update</prop></props></property><!-- 添加对象关系映射 --><property name="packagesToScan"><list><value>cn.entity.*</value></list></property></bean>。

mavensparkScalaidea搭建maven项目的pom.xml文件配置

mavensparkScalaidea搭建maven项目的pom.xml文件配置

mavensparkScalaidea搭建maven项⽬的pom.xml⽂件配置1、pom.xml⽂件配置,直接上代码。

<?xml version="1.0" encoding="UTF-8"?><project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>mvnProject</groupId><artifactId>mvnProject</artifactId><version>1.0-SNAPSHOT</version><name>mvnProject</name><!-- FIXME change it to the project's website --><url></url><!-- 配置以下可以解决在jdk1.8环境下打包时报错 “-source 1.5 中不⽀持 lambda 表达式” --><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><piler.source>1.8</piler.source><piler.target>1.8</piler.target></properties><dependencies><!-- Spark-core --><dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.11</artifactId><version>2.3.1</version></dependency><!-- SparkSQL --><dependency><groupId>org.apache.spark</groupId><artifactId>spark-sql_2.11</artifactId><version>2.3.1</version></dependency><!-- SparkSQL ON Hive--><dependency><groupId>org.apache.spark</groupId><artifactId>spark-hive_2.11</artifactId><version>2.3.1</version></dependency><!--mysql依赖的jar包--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency><!--SparkStreaming--><dependency><groupId>org.apache.spark</groupId><artifactId>spark-streaming_2.11</artifactId><version>2.3.1</version><!--<scope>provided</scope>--></dependency><!-- SparkStreaming + Kafka --><dependency><groupId>org.apache.spark</groupId><artifactId>spark-streaming-kafka-0-10_2.11</artifactId><version>2.3.1</version></dependency><!-- 向kafka ⽣产数据需要包 --><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>0.10.0.0</version></dependency><!--连接 Redis 需要的包--><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.6.1</version></dependency><!-- Scala 包--><dependency><groupId>org.scala-lang</groupId><artifactId>scala-library</artifactId><version>2.11.7</version></dependency><dependency><groupId>org.scala-lang</groupId><artifactId>scala-compiler</artifactId><version>2.11.7</version></dependency><dependency><groupId>org.scala-lang</groupId><artifactId>scala-reflect</artifactId><version>2.11.7</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.12</version></dependency><dependency><groupId>com.google.collections</groupId><artifactId>google-collections</artifactId><version>1.0</version></dependency><!-- https:///artifact/junit/junit --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!-- https:///artifact/org.apache.spark/spark-mllib-local --><dependency><groupId>org.apache.spark</groupId><artifactId>spark-mllib-local_2.11</artifactId><version>2.3.1</version></dependency></dependencies><build><plugins><!-- 在maven项⽬中既有java⼜有scala代码时配置 maven-scala-plugin 插件打包时可以将两类代码⼀起打包 --> <plugin><groupId>org.scala-tools</groupId><artifactId>maven-scala-plugin</artifactId><version>2.15.2</version><executions><execution><goals><goal>compile</goal><goal>testCompile</goal></goals></execution></executions></plugin><!-- maven 打jar包需要插件 --><plugin><artifactId>maven-assembly-plugin</artifactId><version>2.4</version><configuration><!-- 设置false后是去掉 MySpark-1.0-SNAPSHOT-jar-with-dependencies.jar 后的 “-jar-with-dependencies” --> <!--<appendAssemblyId>false</appendAssemblyId>--><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs><archive><manifest><mainClass>com.bjsxt.scalaspark.sql.windows.OverFunctionOnHive</mainClass></manifest></archive></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>assembly</goal></goals></execution></executions></plugin><!-- 以上assembly可以将依赖的包打⼊到⼀个jar包中,下⾯这种⽅式是使⽤maven原⽣的⽅式打jar包,不将依赖的包打⼊到最终的jar包中 --> <!--<plugin>--><!--<groupId>org.apache.maven.plugins</groupId>--><!--<artifactId>maven-jar-plugin</artifactId>--><!--<version>2.4</version>--><!--<configuration>--><!--<archive>--><!--<manifest>--><!--<addClasspath>true</addClasspath>--><!--<!– 指定当前主类运⾏时找依赖的jar包时所有依赖的jar包存放路径的前缀 –>--><!--<classpathPrefix>/alljars/lib</classpathPrefix>--><!--<mainClass>com.bjsxt.javaspark.sql.CreateDataSetFromHive</mainClass>--><!--</manifest>--><!--</archive>--><!--</configuration>--><!--</plugin>--><!-- 拷贝依赖的jar包到lib⽬录 --><!--<plugin>--><!--<groupId>org.apache.maven.plugins</groupId>--><!--<artifactId>maven-dependency-plugin</artifactId>--><!--<executions>--><!--<execution>--><!--<id>copy</id>--><!--<phase>package</phase>--><!--<goals>--><!--<goal>copy-dependencies</goal>--><!--</goals>--><!--<configuration>--><!--<outputDirectory>--><!--<!– 将依赖的jar 包复制到target/lib下–>--><!--${project.build.directory}/lib--><!--</outputDirectory>--><!--</configuration>--><!--</execution>--><!--</executions>--><!--</plugin>--></plugins></build></project>。

史上最全的maven的pom.xml文件详解

史上最全的maven的pom.xml文件详解

史上最全的maven的pom.xml⽂件详解
1. parent元素
2. 项⽬基本信息
3. prerequisites元素
4. issueManagement元素
5. ciManagement元素
6. inceptionYear & mailingLists元素
7. developers元素
8. contributors元素
9. licenses元素
10. scm(Source Control Management)元素
11. organization元素
12. build元素
13. build元素中的resources元素
14. build元素中的testResources元素
15. build元素中的directory、finalName、filters元素
16. build元素中的pluginManagement元素
17. build元素中的plugins元素
18. modules元素
19. repositories元素
20. pluginRepositories元素
21. dependencies元素
22. reports元素
23. reporting元素
24. dependencyManagement元素
25. distributionManagement元素
26. properties元素
注:详解⽂件中,⽤红⾊进⾏标注的是平常项⽬中常⽤的配置节点。要详细学习!

Spring中xml的配置

Spring中xml的配置(摘抄)出自:1、value元素<value/>元素通过字符串来指定属性或构造器参数的值。

<bean id="myDataSource" detroy-method="close"class="mons.dbcp.BasicDataSource"><property name="driverClassName"><value>com.mysql.jdbc.Driver</value></proerpty><property name="url"><value>jdbc:mysql://localhost:3306/mydb</value></property><property name="username"><vlaue>root</value></property></bean>2、idref元素idref元素用来将容器内其它bean的id传给<constructor-arg/>或<property/>元素,同时提供错误难功能。

<bean id="theTargetBean" class="..."/><bean id="theClientBean" class="..."><property name="targetName"><idref bean="theTargetBean" /></property></bean>等同于:<bean id="theTargetBean" class="..." /><bean id="theClientBean" class="..."><property name="targetName"><value>theTargetBean</value></bean>使用idref标记允许容器在部署时验证所被引用的bean是否存在。

springmvc+spring+hibernate整合

SpringMVC+Spring+Hibernate整合一、Spring + SpringMVC +Hibernate集成步骤。

1、集成Spring框架:编写spring的配置文件在web.xml中通过监听器加载spring的配置文件2、集成Hibernate框架:在spring的配置文件中,配置sessionFactory对象。

为sessionFactory对象注入Hibernate相关属性配置transactionManager事务管理器3、集成spring mvc框架:编写spring mvc的配置文件在web.xml中注册DispatcherServlet,加载spring mvc配置文件4、在web.xml中注册常用的过滤器:字符集过滤器和OpenSessionInView过滤器等。

1.导入相应的JAR包项目结构编写jdbc.properties 文件#mysql configjdbc.url=jdbc:mysql:///testjdbc.driver=com.mysql.jdbc.Driverername=rootjdbc.password=root编写日志properties 文件og4j.rootLogger=INFO,stdout,logfilelog4j.appender.stdout=org.apache.log4j.ConsoleAppenderyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d%p[%c]-%m%nlog4j.appender.logfile=org.apache.log4j.RollingFileAppenderlog4j.appender.logfile.File=project-log.loglog4j.appender.logfile.MaxFileSize=512KB# Keep three backup files.log4j.appender.logfile.MaxBackupIndex=3# Pattern to output: date priority [category] - messageyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d%p[%c]-%m%n6.编写Spring 配置文件,开启组件自动扫描,加载属性文件,配置持久层(数据源,SessionFactory),事物管理,及JSR303验证beans.xml<?xml version="1.0"encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:context="/schema/context"xmlns:tx="/schema/tx"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/bean s/schema/beans/spring-beans-3.0.xsd /schema/context/schema/context/spring-context-3.0. xsd/schema/tx/schema/tx/spring-tx-3.0.xsd"><!-- 开启组件自动扫描,将标注有注解的bean加到配置文件中 --><context:component-scan base-package="com"/><!-- 加载properties属性文件 --><context:property-placeholderlocation="classpath*:jdbc.properties"/><!-- 配置数据源 --><bean id="dataSource" class="mons.dbcp.BasicDataSource"destroy-method="close"><property name="driverClassName"value="${jdbc.driver}"/><property name="url"value="${jdbc.url}"/><property name="username"value="${ername}"/><property name="password"value="${jdbc.password}"/> </bean><!-- 配置SessionFactory --><bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean "><property name="dataSource"ref="dataSource"/><property name="mappingDirectoryLocations"><list><value>classpath*:com/nyf/entity/</value></list></property><property name="hibernateProperties"><value>hibernate.dialet=org.hibernate.dialect.MySQL5Dialecthibernate.show_sql=truehibernate.hbm2ddl.auto=update</value></property></bean><!-- HibernateTempate是否是线程安全 --><beanclass="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory"ref="sessionFactory"/> </bean><!-- 事务配置 --><bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionMan ager"><property name="sessionFactory"ref="sessionFactory"/> </bean><!-- 配置事物管理器 --><tx:annotation-driven transaction-manager="txManager"/><!-- JSR 303验证 --><bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidat orFactoryBean"/></beans>2.编写相应的实体类erpackage com.nyf.entity;import java.util.*;public class User {private Integer id;/**姓名*/private String name;/**年龄*/private int age;/**生日*/private Date birthday = new Date();/**电话*/private String phone;/**Email*/private String mail;/**性别*/private int gender;//0女1男/**身份证*/private String idcard;/**地址*/private String address;/**职位*/private String position;/**密码*/private String password;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) { = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) { this.birthday = birthday;}public String getPhone() {return phone;}public void setPhone(String phone) { this.phone = phone;}public String getMail() {return mail;}public void setMail(String mail) {this.mail = mail;}public int getGender() {return gender;}public void setGender(int gender) {this.gender = gender;}public String getIdcard() {return idcard;}public void setIdcard(String idcard) {this.idcard = idcard;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getPosition() {return position;}public void setPosition(String position) {this.position = position;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return name+", "+age+", "+birthday+", "+phone+", "+mail+", "+gender+", "+idcard+", "+address+", "+position+", "+password;}}er.hbm.xml配置<?xml version="1.0"encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.nyf.entity"><class name="User"table="t_user"><id name="id"><generator class="native"/></id><property name="name"length="30"/><property name="age"/><property name="birthday"/><property name="phone"length="30"/><property name="mail"length="30"/><property name="gender"/><property name="idcard"length="30"/><property name="address"length="30"/><property name="position"length="100"/><property name="password"length="30"/></class></hibernate-mapping>4.编写Dao层com.nyf.Daopackage com.nyf.dao;import java.util.*;import com.nyf.entity.*;public interface IUserDao {/**增加一个用户*/public void add(User user);/**删除一个用户*/public void del(User user);/**修改一个用户*/public void modify(User user);/**根据Id查询一个用户*/public User findById(int id);/**验证用户是否存在*/public User validate(String name,String password);/**查询所有的用户*/public List<User> findAll();/**分页查询用户*/public List<User> findPage(int pageNo,int counts);}5.编写dao层实现类Com.nyf.dao.implpackage com.nyf.dao.impl;import java.util.List;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.orm.hibernate3.HibernateTemplate;import org.springframework.stereotype.Repository;import com.nyf.dao.IUserDao;import er;//把 userDaoImpl交给Spring IOC容器管理@Repository("userDao")public class UserDaoImpl implements IUserDao {//由Spring依赖注入@Autowiredprivate HibernateTemplate hibernateTemplate;@Overridepublic void add(User user) {hibernateTemplate.save(user);}@Overridepublic void del(User user) {hibernateTemplate.delete(user);}@Overridepublic void modify(User user) {hibernateTemplate.update(user);}@Overridepublic User findById(int id) {List<User> users = hibernateTemplate.find("from User u where u.id=?", id);if(users.size()>0){return users.get(0);}else{return null;}}@Overridepublic List<User> findAll() {List<User> users = hibernateTemplate.find("from User");return users;}@Overridepublic List<User> findPage(int pageNo, int counts) {List<User> users = hibernateTemplate.getSessionFactory().openSession().createCriteria(User.class) .setFirstResult(pageNo*counts).setMaxResults(counts).list();return users;}@Overridepublic User validate(String name,String password) {String hql = "from User u where =? and u.password=?";String []values = {name,password};List<User> users = hibernateTemplate.find(hql,values);if(users.size()>0){return users.get(0);}else{return null;}}}7.编写ServiceCom.nyf.servicepackage com.nyf.service;import java.util.*;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional; import com.nyf.dao.IUserDao;import er;//Service层最好用@Service注解//@Transactional该业务开启事物管理@Service@Transactionalpublic class UserService {//Spring 自动注入@Autowiredprivate IUserDao userDao;public void save(User user){userDao.add(user);}public void delete(User user){userDao.del(user);}public void modify(User user){userDao.modify(user);}//对于查询的业务,最好事物设置为只读@Transactional(readOnly=true)public User findById(int id){return userDao.findById(id);}@Transactional(readOnly=true)public User validate(String name,String password){return userDao.validate(name,password);}@Transactional(readOnly=true)public List<User> findAll(){return userDao.findAll();}@Transactional(readOnly=true)public List<User> findPage(int pageNo,int counts){return userDao.findPage(pageNo, counts);}}编写SpringMVC配置文件,组件自动扫描控制器层,文件上传解析器等<?xml version="1.0"encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:context="/schema/context"xmlns:mvc="/schema/mvc"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/bean s/schema/beans/spring-beans-3.0.xsd /schema/context/schema/context/spring-context-3.0. xsd/schema/mvc/schema/mvc/spring-mvc-3.0.xsd"><!-- 组件自动扫描控制器层--><context:component-scan base-package="com" use-default-filters="false"><context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan><!--<mvc:annotation-driven /> 是一种简写形式,完全可以手动配置替代这种简写形式简写形式可以让初学都快速应用默认配置方案。

springcloudpom.xml完整配置详解

springcloudpom.xml完整配置详解1、⽗⼯程<packaging>pom</packaging><name>Maven</name><!-- FIXME change it to the project's website --><url>/</url><inceptionYear>2001</inceptionYear><distributionManagement><site><id>website</id><url>scp:///www/website</url></site></distributionManagement><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><piler.source>12</piler.source><piler.target>12</piler.target><junit.version>4.12</junit.version><lombok.version>1.18.10</lombok.version><log4j.version>1.2.17</log4j.version><mysql.version>8.0.18</mysql.version><druid.version>1.1.16</druid.version><mybatis.spring.boot.version>2.1.1</mybatis.spring.boot.version></properties><dependencyManagement><dependencies><!--⽗⼯程引⼊spring cloud alibaba 2.1.0.RELEASE--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.1.0.RELEASE</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.apache.maven.plugins</groupId><artifactId>maven-project-info-reports-plugin</artifactId><version>3.0.0</version></dependency><!--spring boot 2.2.2--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.2.2.RELEASE</version><type>pom</type><scope>import</scope></dependency><!--spring cloud Hoxton.SR1--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Hoxton.SR1</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.1.0.RELEASE</version><type>pom</type><scope>import</scope></dependency><!--mysql--><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version><scope>runtime</scope></dependency><!-- druid--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>${druid.version}</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId> <version>${mybatis.spring.boot.version}</version> </dependency><!--junit--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version></dependency><!--log4j--><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4j.version}</version></dependency></dependencies></dependencyManagement><!--maven插件--><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><fork>true</fork><addResources>true</addResources></configuration><!----></plugin></plugins></build>2、⼦⼯程<dependencies><dependency><groupId>org.example</groupId><artifactId>common-service</artifactId><version>${project.version}</version></dependency><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>2.8.2</version></dependency><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.10</version></dependency><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.6</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version></dependency><groupId>io.github.openfeign</groupId><artifactId>feign-httpclient</artifactId></dependency><dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.9.2</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><!-- https:///artifact/mysql/mysql-connector-java --> <dependency><groupId>org.example</groupId><artifactId>common</artifactId><version>${project.version}</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.18</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.9.0</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.9.0</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.0</version></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.41</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><exclusions><exclusion><groupId>redis.clients</groupId><artifactId>jedis</artifactId></exclusion><groupId>io.lettuce</groupId><artifactId>lettuce-core</artifactId></exclusion></exclusions></dependency><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency></dependencies>3、swapper配置package main.config;import org.springframework.context.annotation.Bean;import ponentScan;import org.springframework.context.annotation.Configuration;import springfox.documentation.builders.ApiInfoBuilder;import springfox.documentation.builders.PathSelectors;import springfox.documentation.builders.RequestHandlerSelectors;import springfox.documentation.service.ApiInfo;import springfox.documentation.spi.DocumentationType;import springfox.documentation.spring.web.plugins.Docket;import springfox.documentation.swagger2.annotations.EnableSwagger2;@Configuration@EnableSwagger2public class SwaggerConfig {@Beanpublic Docket createRestApi() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("main.controller")).paths(PathSelectors.any()).build();}//配置在线⽂档的基本信息private ApiInfo apiInfo() {return new ApiInfoBuilder().title("springboot利⽤swagger构建api⽂档").description("简单优雅的restfun风格,https:///blog/miachen520") .termsOfServiceUrl("https:///blog/miachen520").version("1.0").build();}}4、跨域配置package main.config;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configurationpublic class webConfig implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {// 设置允许跨域的路径registry.addMapping("/**")// 设置允许跨域请求的域名.allowedOrigins("*")// 是否允许证书.allowCredentials(true).allowedMethods("*").maxAge(3600);}}5、Redis序列化serializer:package main.config;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.parser.ParserConfig;import com.alibaba.fastjson.serializer.SerializerFeature;import org.springframework.data.redis.serializer.RedisSerializer;import org.springframework.data.redis.serializer.SerializationException;import java.nio.charset.Charset;public class FastJsonRedisSerializer<T> implements RedisSerializer<T> {public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");private Class<T> clazz;public FastJsonRedisSerializer(Class<T> clazz) {super();this.clazz = clazz;}@Overridepublic byte[] serialize(T t) throws SerializationException {if (null == t) {return new byte[0];}return JSON.toJSONString(t, SerializerFeature.WriteClassName).getBytes(DEFAULT_CHARSET); }@Overridepublic T deserialize(byte[] bytes) throws SerializationException {if (null == bytes || bytes.length <= 0) {return null;}String str = new String(bytes, DEFAULT_CHARSET);ParserConfig.getGlobalInstance().setAutoTypeSupport(true);return (T) JSON.parseObject(str, clazz);}}config:package main.config;import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;import org.springframework.boot.autoconfigure.data.redis.RedisProperties;import org.springframework.boot.context.properties.EnableConfigurationProperties;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.connection.RedisConnectionFactory;import org.springframework.data.redis.core.RedisOperations;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.core.StringRedisTemplate;import org.springframework.data.redis.serializer.StringRedisSerializer;@Configuration@ConditionalOnClass(RedisOperations.class)@EnableConfigurationProperties(RedisProperties.class)public class redisConfig {@Bean@ConditionalOnMissingBean(name = "redisTemplate")public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {RedisTemplate<Object, Object> template = new RedisTemplate<>();//使⽤fastjson序列化FastJsonRedisSerializer fastJsonRedisSerializer = new FastJsonRedisSerializer(Object.class);// value值的序列化采⽤fastJsonRedisSerializertemplate.setValueSerializer(fastJsonRedisSerializer);template.setHashValueSerializer(fastJsonRedisSerializer);// key的序列化采⽤StringRedisSerializertemplate.setKeySerializer(new StringRedisSerializer());template.setHashKeySerializer(new StringRedisSerializer());template.setConnectionFactory(redisConnectionFactory);return template;}@Bean@ConditionalOnMissingBean(StringRedisTemplate.class)public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {StringRedisTemplate template = new StringRedisTemplate();template.setConnectionFactory(redisConnectionFactory);return template;}}到此这篇关于springcloud pom.xml完整配置的⽂章就介绍到这了,更多相关springcloud pom.xml配置内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

SpringMVC+Spring+Hibernate集成详解

Spring+SpringMVC+Hibernate框架集成详解注:此文档只说明简单的框架集成,各个框架的高级特性未涉及,此文档适合有框架使用基础的开发人员查看,新手可能需要参考其他资料。

1.准备工作开发环境:JDK 7u80、Eclipse 4.4 、Tomcat 7.0.63、MySQL 5.6、Tomcat JDBC POOL框架:Spring 3.2.14、Hibernate 3.6.10、common-logging 1.2、aopalliance.jar、aspectjweaver.jar、mysql-connector-java-5.1.35-bin.jar在Eclipse下创建动态web项目Test,创建过程中注意勾选web.xml的选项,如果不勾选,项目创建之后需要手动创建web.xml,创建完成后将其部署到Tomcat中,项目结构应该如下(Package Explorer下,看个人习惯):2.配置Spring1)将以下JAR包复制到lib文件夹下,不要问为什么是这些,想知道为什么可以把其他任意一个删掉看看启动项目报什么错。

2)在web.xml中添加如下代码:3)创建applicationContext.xml,当前版本的Spring默认其位于WEB-INF下,不过大多数开发人员习惯还是将其放到src下,这里我们将其放在src下。

4)向applicationContext.xml中添加bean相关声明,具体如下:5)在web.xml中添加如下内容,用于自定义Spring配置文件的位置:3.测试Spring注:以下均为测试代码,测试完成后可以删除,User类建议保留,之后用于测试框架的集成情况1)新建测试实体类User,路径暂定为com.test.entity,添加如下代码(因为篇幅限制,所以图中无get和set方法,请自行添加)2)applicationContext.xml中添加如下定义:3)新建Test类,暂定路径com.test.test,添加如下代码:4)运行Test类查看结果,如果输出test则表示spring框架运行正常。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档