Maven知识学习要点二

一、知识概述

Maven的好处:

1、  不再拷贝jar包。项目不需要存放jar包。导致项目源代码小

2、  使用maven开发的工程,如果环境统一导入别的maven的项目不会报错

3、  代码耦合度进一步降低.

4、  方便项目进行升级

5、  节省人力成本

 二、知识简介

Maven中的传递依赖: A---依赖---》B ---依赖---》C C就是A的传递依赖

调解原则:① 第一声明者优先原则 谁先定义就用谁的传递依赖。

                  ② 路径近者优先原则   直接依赖级别高于传递依赖。

1.1    排除依赖

1.2    版本锁定(推荐使用)

 

2   通过maven整合SSH框架(重点)

2.1    搭建struts2环境

1、  创建strut2配置文件:struts.xml

2、  在web.xml中配置strut2的核心过滤器

1 <!-- 配置Struts核心过滤器 -->
2     <filter> 3 <filter-name>struts</filter-name> 4 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 5 </filter> 6 <filter-mapping> 7 <filter-name>struts</filter-name> 8 <url-pattern>/*</url-pattern> 9 </filter-mapping>
2.2    搭建spring环境

1、  创建spring配置文件applicationContext.xml

2、  在web.xml中配置监听器:ContextLoaderListener

 1 <!-- 配置监听器:默认加载WEB-INF/applicationContext.xml -->
 2     <listener>  3 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  4 </listener>  5  6 <!-- 通过上下文参数指定spring配置文件路径 -->  7 <context-param>  8 <param-name>contextConfigLocation</param-name>  9 <param-value>classpath:applicationContext.xml</param-value> 10 </context-param>
2.3    搭建Hibernate环境

1、  创建Hibernate核心配置文件

 1 <?xml version='1.0' encoding='utf-8'?>
 2 <!DOCTYPE hibernate-configuration PUBLIC  3  "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  4  "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">  5  6 <hibernate-configuration>  7 <!-- 会话工厂 -->  8 <session-factory>  9 <!-- 数据库方言,根据数据库选择 --> 10 <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property> 11 12 <!--为了方便调试是否在运行hibernate时在日志中输出sql语句 --> 13 <property name="hibernate.show_sql">true</property> 14 <!-- 是否对日志中输出的sql语句进行格式化 --> 15 <property name="hibernate.format_sql">true</property> 16 17 <property name="hibernate.hbm2ddl.auto">update</property> 18 19 20 </session-factory> 21 </hibernate-configuration>
2.4    Struts2跟spring整合

整合关键点:action对象创建,交给spring创建

1、  创建action类

2、  将action对象配置到spring配置文件中

3、  在struts.xml中在action节点中class属性配置为spring工厂中action对象bean的id

2.5    Spring跟Hibernate框架整合

整合关键点:1、数据源dataSource交给spring   2、SessionFactory对象创建交给spring创建   3、事务管理

1、  配置dataSource

1 <!-- 加载属性文件 -->        
2     <context:property-placeholder location="classpath:db.properties"/> 3 4 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> 5 <property name="driverClass" value="${jdbc.driverClass}"></property> 6 <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property> 7 <property name="user" value="${jdbc.user}"></property> 8 <property name="password" value="${jdbc.password}"></property> 9 </bean>

2、  配置SessionFactory对象

1 <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> 2 <property name="dataSource" ref="dataSource"></property> 3 <property name="configLocations" value="classpath:applicationContext.xml"></property> 4 </bean> 

3、  事务管理

a)   配置事务管理器: PlatFormTransactionManager:接口

                         i.        Jdbc:DataSourceTransactionManager

                         ii.       Hibernate:HibernateTransactionManager

 1 <!-- 配置事务管理器 -->
 2     <bean id="transactionManager"  3  class="org.springframework.orm.hibernate5.HibernateTransactionManager">  4 <property name="sessionFactory" ref="sessionFactory"></property>  5 </bean>  6  7 <!-- xml方式管理事务 -->  8 <!-- 配置通知:具体增强逻辑 -->  9 <tx:advice id="txAdvice"> 10 <tx:attributes> 11 <!-- 匹配业务类中方法名称 --> 12 <tx:method name="save*" /> 13 <tx:method name="update*" /> 14 <tx:method name="delete*" /> 15 <tx:method name="find*" read-only="true"/> 16 <tx:method name="*"/> 17 </tx:attributes> 18 </tx:advice> 19 20 <!-- 配置aop --> 21 <aop:config> 22 <!-- 配置切点:具体哪些方法要增强(真正被增强的方法)--> 23 <aop:pointcut expression="execution(* cn.itcast.service.*.*(..))" id="cut"/> 24 <!-- 配置切面:将增强逻辑作用到切点 (通知+切入点) --> 25 <aop:advisor advice-ref="txAdvice" pointcut-ref="cut"/> 26 </aop:config>

2.6    需求

在地址栏输入action请求:http://locahost:8080/project/customerAction_findOne.action?custId=1,action-service-dao。完成客户查询

2.7    具体实现

1、  创建客户实体类、映射文件、将映射文件引入Hibernate核心配置文件中

2、  创建action、service、dao。完成注入

a)         在类中添加属性生成set方法

b)         在spring配置文件中完成注入

 

3、  在struts.xml中配置action,配置结果视图

总结:

1、  页面提交参数,在服务端action接收参数          参

2、  调用业务层方法—》dao的方法—》DB            调

3、  将返回的数据存值栈                            存

4、  配置结果视图,跳转页面                        转


 1       通过maven对项目进行拆分、聚合(重点)

对现在已有maven ssh项目进行拆分,拆分思路:将dao层的代码已经配置文件全体提取出来到一个表现上独立的工程中。同样service、action拆分。

ssh-parent: 父工程

ssh-dao:(子模块)

ssh-service

ssh-web

拆分完成对拆分后的项目进行聚合,提出概念父工程

1.1    创建父工程

创建好父工程目录结构:只有pom.xml,可以推断父工程不进行编码。

1、  项目需要的依赖的信息,在父工程中定义,子模块继承过程

2、  将各个子模块聚合到一起

1.2    将创建父工程发布到本地仓库

将来service、dao工程发布到本地仓库。发布的service工程会报错。

如果忘记此步骤,将父工程发布到本地仓库。

1.3    创建子模块ssh-dao

Ssh-dao负责数据访问层:包含dao相关代码&配置文件

1.3.1      将spring的配置文件拆分

:项目基础的信息

:dao层bean对象

 

1.4    创建子模块ssh-service

将ssh-dao工程打包到本地仓库;

在service工程pom.xml文件添加ssh-dao的依赖

1.4.1      单元测试

1、  批量加载spring配置文件

a)         classpath:spring/applicationContext-*.xml

b)         classpath*:spring/applicationContext-*.xml:既要加载本项目中配置文件,还要加载jar包中配置文件

2、  传递依赖范围(了解)

A:ssh-service 工程

B:ssh-dao工程

C:junit单元测试

总结:当项目中需要的某一个依赖没有传递过来。在自己工程中添加对应依赖就可以。

1.5    创建子模块ssh-web:war

在ssh-web项目中添加service工程依赖。

Web.xml

1.6   运行方式

Maven方式:

方式1:运行父工程。父工程将各个子模块聚合到一起。将ssh-web打war包发布到tomcat

方式2:直接运行web工程

其他方式:部署到tomcat

2    私服应用(了解)

1、  下载安装包

2、解压到本地磁盘

3、使用管理员权限打开dos,在dos下执行命令安装私服

4、启动服务

5、  找到私服的访问url:

http://localhost:8081/nexus/#welcome

登陆:admin/admin123

3    私服仓库类型

Hosted:宿主仓库

        存放本公司开发的jar包(正式版本、测试版本、第三方:存在版权问题--Oracle)

Proxy:代理仓库

        代理中央仓库、Apache下测试版本的jar包

Group:组仓库

        将来连接组仓库。包含Hosted:宿主仓库,Proxy:代理仓库

3.1    上传jar包到私服上(应用)

3.1.1、  在maven目录下conf/settings.xml.认证:配置用户名密码

 1 <server>
 2       <id>releases</id>
 3       <username>admin</username>
 4       <password>admin123</password>
 5 </server>
 6 <server>
 7       <id>snapshots</id>
 8       <username>admin</username>
 9       <password>admin123</password>
10  </server>

3.1.2   在将要上传的项目的pom.xml中配置jar包上传路径url

 1 <distributionManagement>
 2       <repository>
 3           <id>releases</id>
 4     <url>http://localhost:8081/nexus/content/repositories/releases/</url>
 5       </repository> 
 6       <snapshotRepository>
 7           <id>snapshots</id>
 8     <url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
 9       </snapshotRepository> 
10   </distributionManagement>

3.1.3、  执行命令发布项目到私服(上传) deploy

3.2    下载jar包到本地仓库(应用)

3.2.1、  在maven目录下conf/settings.xml。配置模板

 1 <profile>   
 2     <!--profile的id-->
 3    <id>dev</id>   
 4     <repositories>   
 5       <repository>  
 6     <!--仓库id,repositories可以配置多个仓库,保证id不重复-->
 7         <id>nexus</id>   
 8         <!--仓库地址,即nexus仓库组的地址-->
 9         <url>http://localhost:8081/nexus/content/groups/public/</url>   
10         <!--是否下载releases构件-->
11         <releases>   
12           <enabled>true</enabled>   
13         </releases>   
14         <!--是否下载snapshots构件-->
15         <snapshots>   
16           <enabled>true</enabled>   
17         </snapshots>   
18       </repository>   
19     </repositories>  
20      <pluginRepositories>  
21         <!-- 插件仓库,maven的运行依赖插件,也需要从私服下载插件 -->
22         <pluginRepository>  
23             <!-- 插件仓库的id不允许重复,如果重复后边配置会覆盖前边 -->
24             <id>public</id>  
25             <name>Public Repositories</name>  
26             <url>http://localhost:8081/nexus/content/groups/public/</url>  
27         </pluginRepository>  
28     </pluginRepositories>  
29   </profile>  

3.2.2、  激活模板

1 <activeProfiles>
2     <activeProfile>dev</activeProfile>
3 </activeProfiles>

 至此,Maven知识了解完了,可以用Maven来管理SSH、SSM等框架的项目了。

转载于:https://www.cnblogs.com/xiaoxiaoyisheng/p/7536478.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值