拆分与聚合的思想
1.什么是拆分
maven把一个完整的项目,分成不同的独立的模块,这些模块的都有各自独立的坐标,其他项目需要某一个模块的时候,直接把模块的坐标导入即可。
2.什么是聚合
我们可以把拆分零散的模块聚合带一起,编写成一个完整的项目。
工程之间的依赖和继承关系
依赖:可以后天加入。
继承:工程创建时用。
1.父子工程是继承关系。
2.子工程之间没有关系,但是可以依赖。
创建父子工程
1.创建父工程(父工程只需要一个pom文件)
2.创建三层架构dao,service,web
父子工程中的详细关系示例
1.父工程
管理jar包和模块之间的关系
<modelVersion>4.0.0</modelVersion>
<groupId>com.maven</groupId>
<artifactId>02mavenparent</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>maven_dao</module>
<module>maven_service</module>
<module>maven_web</module>
</modules>
<!--此处省略jar包-->
.......
2.dao层
1.与父工程的关系
<parent>
<artifactId>02mavenparent</artifactId>
<groupId>com.maven</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.maven</groupId>
<artifactId>maven_dao</artifactId>
<version>1.0-SNAPSHOT</version>
2.目录结构
【1】java目录:与普通的项目dao层结构一样
【2】resource目录:
配置映射文件和spring整合mybatis文件applicationContext-dao.xml。
applicationContext-dao.xml
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/maven?serverTimezone=UTC"></property>
<property name="username" value="root"></property>
<property name="password" value="liuqing.1998"></property>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="typeAliasesPackage" value="com.maven.beans"></property>
</bean>
<bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.maven.dao"></property>
</bean>
3.与子工程的关系
直接与数据库打交道。不调用其他层次的方法。
3.service层
1.与父工程关系
同上。
2.目录结构
【1】java结构:与普通的项目service层结构一样
【2】resource结构:配置applicationContext-service.xml
applicationContext-service.xml
<context:component-scan base-package="com.maven"/>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<tx:advice id="advice">
<tx:attributes>
<tx:method name="find*" read-only="true"/>
<tx:method name="*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="pointcut" expression="execution(* com.maven.service.impl.*.*(..))"/>
<aop:advisor advice-ref="advice" pointcut-ref="pointcut"></aop:advisor>
</aop:config>
</beans>
3.与子工程的关系
service层调用dao层的。所以得加入dao层得坐标,加入了dao层的坐标,可以读取dao层的信息。
<dependencies>
<dependency>
<groupId>com.maven</groupId>
<artifactId>maven_dao</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
4.web层
1.与父工程的关系
同上
2.目录结构
【1】java目录:不改变
【2】resource目录:
applicationContext.xml
<import resource="classpath:spring/applicationContext-service.xml"/>
<import resource="classpath:spring/applicationContext-dao.xml"/>
</beans>
将dao层和service层的主配置文件放到一起。
在servlet容器启动时加载配合文件的时候。
web.xml文件配置主配置文件
<display-name>Archetype Created Web Application</display-name>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3.与子工程的关系
web层调用service层,加入service层工程的坐标
<dependencies>
<dependency>
<groupId>com.maven</groupId>
<artifactId>maven_service</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
运行方法
1.用本机tomcat运行,配置tomcat服务器即可。
2.使用maven插件,配置tomcat插件,点击右测MavenProject。
点击如图所示run按钮运行。