整合SSM框架(内含具体配置文件)

XML

整合Spring

  • 测试springioc
  • 测试DI
  • 测试springaop
  • 测试spring jdbc(x)
  • 测试spring 事务;
导包:

导入依赖到maven工程中:

导入依赖 :spring-context
会同时添加 :
org.springframework:spring-context:5.3.36
org.springframework:spring-aop:5.3.36
org.springframework:spring-beans:5.3.36
org.springframework:spring-core:5.3.36
org.springframework:spring-expression:5.3.36
导入 aspectJ 的依赖 :spring-aspects
会携带添加 :org.aspectj:aspectjweaver:1.9.7 织入
导入 jdbc 的依赖 : spring-jdbc:
会同时添加 org.springframework:spring-tx:5.3.36 spring 事务
导入连接池的依赖 :druid
导入数据库驱动包的依赖 :mysql-java
整合 junit 测试 : 4.12
导入 spring-test 的依赖 : spring-test;

 整合SpringMVC

导入 springmvc 相关 jar :
导入相关依赖 :spring-webmvc
会携带 spring-web jar 包;
导入异步 json 数据处理依赖: jackson-databind
会携带 jackson-core jackson-annotations
导入 servlet 依赖 :
导入 jstl 的依赖 :( 非必须 , jsp 页面中使用 <c:foreach> 等标签的时候使用 ;)
  • 优先去测验,controller能否运行
  • 配置;.

整合mybatis 

https://mybatis.org/spring/zh_CN/index.html
MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。它将允许 MyBatis 参与到 Spring的事务管理之中,创建映射器 mapper SqlSession 并注入到 bean ,以及将 Mybatis 的异常转换为 Spring DataAccessException
需要导入依赖:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<!-- 3版本的要求 jdk版本为17,spring版本为6-->
<version>2.1.x</version>
</dependency>
 配置SqlSessionFactoryBean
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 必要属性:dataSource,用于 JDBC 的 DataSource,保证使用spring的连接池即可。 -->
<property name="dataSource" ref="dataSource" />
</bean>
常用属性
  • configLocation : 它用来指定 MyBatis XML 配置文件路径。 它在需要修改 MyBatis 的基础配置非常有用。通常,基础配置指的是 <settings> ` 等元素。
  • mapperLocations :去查找映射文件xml的具体路径。
<bean id="sqlSessionFactory"
class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- classpath*:递归查找,maven项目中表示去查找类路径下面的mapper文件夹下面的所有
的.xml文件; -->
<property name="mapperLocations" value="classpath*:mappers/**/*.xml" />
</bean>

注解版本

@Configuration
public class MyBatisConfig {
@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource());
return factoryBean.getObject();
}
}
发现映射器 
  • 使用 <mybatis:scan/> 元素
  • 使用 @MapperScan 注解
  • 在经典 Spring XML 配置文件中注册一个 MapperScannerConfigurer

 mybatis:scan

`<mybatis:scan/> 元素会发现映射器,它发现映射器的方法与 Spring 内建的 context:component-scan/ ` 发现 bean 的方法非常类似
xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"
http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatisspring.xsd
<!-- 包扫描: -->
<mybatis:scan base-package="org.mybatis.spring.sample.mapper" /
@MapperScan
@Configuration
@MapperScan("org.mybatis.spring.sample.mapper")
public class AppConfig {
// ...
}
 操作
导入依赖: mybatis-spring 依赖;
导入依赖:mybatis依赖;
导入分页的依赖: pageHelper
<!--导入日志依赖:-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.23.0</version>
</dependency>

注解版

注解版整合主要是替代之前的配置文件。
  • web.xml 配置了前端控制器
  • application.xml 主要是springioc配置;
  • application-tx.xml 主要是spring整合事务以及mybatis
  • application-mvc.xml 主要是springmvc配置;

 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project 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">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.ry</groupId>
<artifactId>anSSM</artifactId>
<version>1.1-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<!--设置spring版本:-->
<spring.version>5.3.36</spring.version>
<!--设置mybatis版本-->
<mybatis.version>3.5.16</mybatis.version>
<!--设置数据库驱动版本-->
<mysql.version>8.0.28</mysql.version>
<!--设置连接池版本-->
<druid.version>1.2.4</druid.version>
<!--分页插件版本-->
<pageHelper.version>6.1.0</pageHelper.version>
<!--如果没有web.xml则需要:-->
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!--spring-context-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<!--spring-test-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<!--spring-jdbc-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<!--spring-webmvc-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!--异步请求:-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.16.2</version>
</dependency>
<!--增强:aspectJ-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!--分页-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>${pageHelper.version}</version>
</dependency>
<!--驱动包:-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!--连接池:-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
<!--整合的-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.1.2</version>
</dependency>
<!--日志依赖:-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.23.0</version>
</dependency>
<!--servlet的依赖:-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*</include>
</includes>
</resource>
</resources>
</build>
</project>

 mvc

package cn.ry.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import org.springframework.web.servlet.config.annotation.*;
/**
* @Author dzc
* @Date 2024/6/25 16:18
* @Version 1.0
* 代替之前的application-mvc.xml中的内容;
*/
@Configuration //表示当前类是配置类;
@ComponentScan("cn.ry.controller") //扫描谁?扫描controller;
@EnableWebMvc //代替<mvc:annotation-driven>
public class MvcConfig implements WebMvcConfigurer {
//静态资源;
// @Override
// public void addResourceHandlers(ResourceHandlerRegistry registry) {
// registry.addResourceHandler("/css/**");
// registry.addResourceHandler("/css/**");
// }
//表示静态资源放行操作;<default-servlet-handler/>标签;
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer
configurer) {
configurer.enable();
}
// /WEB-INF/
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp();//使用无参方法表示默认省去前缀/WEB-INF/ 后缀.jsp;
//有参的话可以进行自我调整;
}
//文件上传:
@Bean("multipartResolver")
public CommonsMultipartResolver multipartResolver(){
CommonsMultipartResolver cmr =new CommonsMultipartResolver();
cmr.setDefaultEncoding("utf-8");//设置编码;
cmr.setMaxUploadSize(10240000);//10M
return cmr;
}
//拦截器:
//配置拦截器;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(null).excludePathPatterns("/login/**").addPathPatterns(
"/**");
}
}

mybatis

package cn.ry.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.sql.DataSource;
/**
* @Author dzc
* @Date 2024/6/25 15:09
* @Version 1.0
* 将数据源交给当前类处理——》因为这个里面要返回sqlsession;
*
*/
@Configuration //声明当前类是配置类:
@PropertySource("jdbc.properties") //读取properties资源;
@MapperScan({"cn.ry.mapper"}) //发现映射器,将mapper接口交给spring容器管理;
public class MybatisConfig {
@Value("${a.driverClassName}")
private String driverClassName;
@Value("${a.url}")
private String url;
@Value("${a.username}")
private String username;
@Value("${a.password}")
private String password;
//获取dataSource;
@Bean //创建一个bean交给spring容器管理: 生成出来的bean名字dataSource;
public DataSource getDs(){
DruidDataSource ds =new DruidDataSource();
ds.setDriverClassName(driverClassName);
ds.setUrl(url);
ds.setUsername(username);
ds.setPassword(password);
return ds;
}
//获取SqlSessionFactory;
@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
//设置数据源给SQLSessionFactoryBean;
factoryBean.setDataSource(getDs());
//替换之前sqlsessionfactory加载的内容;
//加载config.xml;
factoryBean.setConfigLocation(new
PathMatchingResourcePatternResolver().getResource("classpath:config.xml"));
//加载:mapper.xml文件;
//加载mapper.xml资源;
PathMatchingResourcePatternResolver ps = new
PathMatchingResourcePatternResolver();
Resource[] rs = ps.getResources("classpath*:mapper/*.xml");//注意因为扫描
到的mapper.xml是多个的,所以使用复数;
factoryBean.setMapperLocations(rs);
return factoryBean.getObject();
}
}

spring

package cn.ry.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
* @Author dzc
* @Date 2024/6/25 14:53
* @Version 1.0
* 代替之前的application.xml中内容;
*/
@Configuration //表示当前类是一个配置类;
@ComponentScan({"cn.ry.service","cn.ry.advisor"}) //等同于之前的context:...scan表示
将包里面的类交给spring容器管理;
@EnableAspectJAutoProxy //表示代替<aop:aspectj-autoproxy/>:开启aop自动代理;
@EnableTransactionManagement //代替:<tx:annotation-driven/>:表示开启事务注解驱动;
public class SpringConfig {
}

web

package cn.ry.config;
import org.springframework.web.filter.CharacterEncodingFilter;
import
org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServle
tInitializer;
import javax.servlet.Filter;
/**
* @Author dzc
* @Date 2024/6/25 16:15
* @Version 1.0
* 替代之前的web.xml中内容;
*/
public class WebConfig extends
AbstractAnnotationConfigDispatcherServletInitializer {
/**
* 去加载spring的配置类:
* @return
*/
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[]{SpringConfig.class};
}
/**
* 加载mvc的配置类:
* @return
*/
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[]{MvcConfig.class};
}
/**
* url-pattern内容:
* @return
*/
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
//过滤器:
@Override
protected Filter[] getServletFilters() {
CharacterEncodingFilter filter = new CharacterEncodingFilter("utf-
8",true,true);
return new Filter[]{filter};
}
}

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值