在pom.xml文件中,导入坐标时,如果出现一个坐标所引用的jar的版本不一致时。遵循优先声明原则在前面的声明的坐标,jar引用优先。
通俗讲:谁先导入 ,就引用谁的。
------- jar包冲突解决方式:
1、第一声明原则:谁先导入 ,就引用谁的
2、直接和传递导入:直接导入jar包。传递导入:导入一个坐标中包含需要的jar包
3、直接排除法:通过exclusions
------- pom.xml文件中的标签的用法
1、dependencies :导入pom坐标的父级标签
2、plugins :导入插件
3、关于pom文件中,导入compiler和tomcat的标签介绍
<plugins>
<plugin>
<groupId>org.apache.tomcat.mavengroupId>
<artifactId>tomcat7-maven-pluginartifactId>
<version>2.2version>
<configuration>
<uriEncoding>utf-8uriEncoding>
<port>9999port>
configuration>
plugin>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-compiler-pluginartifactId>
<version>3.2version>
<configuration>
<source>1.8source>
<target>1.8target>
<encoding>utf-8encoding>
configuration>
plugin>
plugins>
4、关于idea工具中,创建的工程配置文件 *.iml的作用
特点:
1)文件是自动生成,不用手动设置
2)管理的是当前工程(module)中所有加载的jar的相关参数(路径、jar包,被哪个module或project引用)
数据库操作层的框架,配置文件的套路:
jdbc – 8个步骤(加载驱动—配置连接池Connection—拼接Sql — 获取PreparaStatement执行sql语句的工具类 ---- 获取查询结果resultset ----遍历查询结果-----封装查询结果)
1)配置pom.xml的坐标(加载驱动)
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>${mysql.version}version>
dependency>
<dependency>
<groupId>org.mybatisgroupId>
<artifactId>mybatisartifactId>
<version>${mybatis.version}version>
dependency>
<dependency>
<groupId>org.mybatisgroupId>
<artifactId>mybatis-springartifactId>
<version>1.3.0version>
dependency>
2)配置连接池(德鲁伊)
<bean id="dataSource"
class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///maven"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
bean>
3)扫描mybatis的dao的配置
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.itheima.dao"/>
bean>
4)扫描实体类的配置
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="typeAliasesPackage" value="com.itheima.domain"/>
bean>
5)编写测试用例,测试配置的环境(特别注意,配置完成后,必须要先测试)
使用的测试jar:junit
测试类中的@Before的编写
@Before
public void init(){
//读取Spring的配置文件
ApplicationContext ac = new ClassPathXmlApplicationContext("spring/applicationContext-dao.xml");
itemsDao = ac.getBean(ItemsDao.class);
}
编写一个查询方法,测试dao的配置是否正确
@Test
public void testFindById(){
Items items = itemsDao.findById(1);
System.out.println(items);
}
1)配置事务Transactional
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
bean>
2)配置事务的通知
<tx:advice id="advice">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="find*" read-only="true"/>
<tx:method name="select*" read-only="true"/>
<tx:method name="get*" read-only="true"/>
<tx:method name="*" propagation="REQUIRED"/>
tx:attributes>
tx:advice>
3)配置切入点
<aop:config>
<aop:pointcut id="pointcut" expression="execution(* com.itheima.service.impl.*.*(..))"/>
<aop:advisor advice-ref="advice" pointcut-ref="pointcut"/>
aop:config>
4)配置完成后,进行测试
什么是事务?
事务是管理一组对数据库操作的步骤。
如何测试事务?
在一个service的方法中,对数据库的数据进行多次增、删或改的操作,然后手动抛一个异常。程序执行完后,看异常抛出之前的数据操作是否会回滚,如果回滚,事务则生效,否则 不生效。
1)MVC设计模式中,C-controller,主要实现与前端界面的交互。主要做两件事情:
1)接收前端传递的参数并校验参数正确
2)返回前端请求的结果集
2)对配置文件进行配置。web.xml和springmvc.xml
web.xml
<filter>
<filter-name>encodingfilter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
<init-param>
<param-name>encodingparam-name>
<param-value>UTF-8param-value>
init-param>
<init-param>
<param-name>forceEncodingparam-name>
<param-value>trueparam-value>
init-param>
filter>
<filter-mapping>
<filter-name>encodingfilter-name>
<url-pattern>/*url-pattern>
filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
listener>
<context-param>
<param-name>contextConfigLocationparam-name>
<param-value>classpath:applicationContext.xmlparam-value>
context-param>
<servlet>
<servlet-name>springmvcservlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
<init-param>
<param-name>contextConfigLocationparam-name>
<param-value>classpath:springmvc.xmlparam-value>
init-param>
<load-on-startup>1load-on-startup>
servlet>
<servlet-mapping>
<servlet-name>springmvcservlet-name>
<url-pattern>/url-pattern>
servlet-mapping>
springmvc.xml
<context:component-scan base-package="com.itheima.controller"/>
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">bean>
mvc:message-converters>
mvc:annotation-driven>
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
bean>
<mvc:default-servlet-handler/>
1)模块可以直接使用父工程中添加的所有pom坐标
2)模块之间可以通过depenece进行相互的依赖
3)父子工程之间的启动:
如果要对所有模块进行clean的操作,则只需要对父工程(root)执行clean
如果是要安装,则只需对root工程执行 install
注意:
如果修改了模块中的前端代码,为了防止直接install时,前端代码没有更新,最好是先执行clean再执行install
###maven阶段学习小结
1、关于idea工具如何来关联maven环境
2、maven的pom文件的基本的标签
1)确定一个仓库jar包的三个核心坐标
groupId
artifactId
version
2)properties 定义全局参数,配置坐标的版本号
3)dependencyManagement 锁定坐标版本
4)dependency 引入pom坐标的标签
5) plugin 引入外部插件
6)resource标签
<resources>
<resource>
<directory>${basedir}/src/main/javadirectory>
<includes>
<include>**/*.propertiesinclude>
<include>**/*.xmlinclude>
includes>
resource>
<resource>
<directory>${basedir}/src/main/resourcesdirectory>
resource>
resources>