1.new project maven
-
添加依赖
<!--定义变量,其他依赖统一引用--> <properties> <Spring.version>5.3.19</Spring.version> </properties> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${Spring.version}</version> </dependency>
-
项目添加加Web application支持
add Framework support
2.SpringMVC
1.web.xml
-
前端调度器Servlet
<!-- 1. 前端调度器Servlet--> <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:framework/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
<!-- 2. 编码过滤器Filter--> <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> <init-param> <!--RequestEncoding,ResponseEncoding--> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <servlet-name>dispatcherServlet</servlet-name> </filter-mapping>
-
Rest请求过滤器
<!-- 3. Rest请求过滤器--> <filter> <filter-name>hiddenHttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>hiddenHttpMethodFilter</filter-name> <servlet-name>dispatcherServlet</servlet-name> </filter-mapping>
2.springmvc.xml
-
扫描Contrloller包
<!-- 1. 扫描Contrloller包--> <!--方式1.扫描指定包下的所有组件--> <context:component-scan base-package="com.hot.controller"/> <!--方式2.指定路径下只标注@Controller注解的组件--> <context:component-scan base-package="com.hot" use-default-filters="false"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan>
-
添加注解驱动
<!-- 2. 添加<annotation-driver>注解驱动--> <mvc:annotation-driven/>
-
视图解析器
<!-- 3. SpringMVC视图解析器InternalResourceViewResolver,简化视图名称--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/><!--前缀--> <property name="suffix" value=".html"/><!--后缀--> </bean>
-
静态资源解析器
<!-- 4. 静态资源解析器--> <!--方式1.--> <mvc:resources mapping="" location=""/> <!--方式2.--> <mvc:default-servlet-handler></mvc:default-servlet-handler>
-
添加Tomcat服务器
3.Spring
-
添加依赖
<!--spring--> <!--<properties>里添加变量Aspectjweaver.version--> <Aspectjweaver.version>1.9.6</Aspectjweaver.version> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${Spring.version}</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>${Aspectjweaver.version}</version> </dependency> <dependency> <!--事务用到orm--> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${Spring.version}</version> </dependency>
1.web.xml
-
spring容器的启动:监听器方式
<!-- spring基于web应用的启动--> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!--全局的方式通知加载spring--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:framework/spring.xml</param-value> </context-param>
2.spring.xml
-
组件扫描
<!-- 1. 组件扫描,除了Controller控制器以外的组件--> <context:component-scan base-package="com.hot"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan>
-
声明式事务
Mybatis配置好数据库后添加
4.Mybatis
-
添加依赖
<!--<properties>里添加变量Aspectjweaver.version--> <Mybatis-Spring.version>2.0.7</Mybatis-Spring.version> <Mybatis.version>3.5.9</Mybatis.version> <Druid.version>1.2.9</Druid.version> <Mysql-connector-java.version>8.0.28</Mysql-connector-java.version> <Slf4j-api.version>1.7.36</Slf4j-api.version> <Logback-classic.version>1.2.11</Logback-classic.version> <!--mybatis--> <!--spring集成mybatis适配器--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>${Mybatis-Spring.version}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${Mybatis.version}</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>${Druid.version}</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${Mysql-connector-java.version}</version> </dependency> <!--输入SQL日志,slf4j相当于日志接口--> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${Slf4j-api.version}</version> </dependency> <!--日志接口的实现--> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>${Logback-classic.version}</version> </dependency>
-
添加声明式事务
<!-- 2. 声明式事务--> <!--方式一,注解驱动,方法上标记@Transactional--> <tx:annotation-driven transaction-manager="dataSourceTransactionManager"/> <!--方式二,aop切入包下所有方法--> <aop:config> <aop:pointcut id="ransactionCut" expression="execution(* com.hot.service.impl.*.*(..))"/> </aop:config> <!--配置切入点使用的事务类型--> <tx:advice id="advice" transaction-manager="dataSourceTransactionManager"> <tx:attributes> <tx:method name="add*"/> <tx:method name="update*"/> <tx:method name="delete*"/> <tx:method name="get*" read-only="true" propagation="SUPPORTS"/> <tx:method name="find*" read-only="true"/> <tx:method name="query*" read-only="true"/> <tx:method name="select*" read-only="true"/> </tx:attributes> </tx:advice> <bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager" id="dataSourceTransactionManager"> <property name="dataSource" value="druidDataSource"/> </bean> <!--从db.properties里读取属性值--> <bean class="com.alibaba.druid.pool.DruidDataSource" id="druidDataSource"> <property name="driver" value="${mysql.driver}"/> <property name="url" value="${mysql.url.test}"/> <property name="username" value="${mysql.username}"/> <property name="password" value="${mysql.password}"/> </bean> <!--引人外部资源文件--> <context:property-placeholder location="classpath:db/db.properties"/>
1.mybatis.xml
<!-- sqlSessionFactory注册到IOC-->
<bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sessionFactoryBean">
<!--数据源指定为spring中的-->
<property name="dataSource" ref="druidDataSource"/>
<property name="configLocation" value="classpath:/framework/mybatis.xml"/>
<property name="mapperLocations" value="classpath:com/hot/mapper/*.xml"/>
</bean>
<!--将mapper接口注入到springIOC管理-->
<mybatis:scan base-package="com.hot.mapper"/>