请注意,本文编写于 423 天前,最后修改于 423 天前,其中某些信息可能已经过时。
SSM整合相关纯注解配置类 备忘
纯注解配置类,包含Servlet,SpringMVC,Spring,MyBatis
组件名(artifactId) | 版本号 |
---|---|
javax.servlet-api |
4.0.1 |
javax.servlet.jsp-api |
2.3.3 |
spring-webmvc |
5.2.10.RELEASE |
mysql-connector-java |
5.1.49 |
spring-jdbc |
5.2.10.RELEASE |
druid |
1.2.17 |
mybatis |
3.5.13 |
mybatis-spring |
2.1.1 |
Servlet配置类
ServletConfig.java
package com.deepfal.config;
import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
import javax.servlet.Filter;
/**
* AbstractAnnotationConfigDispatcherServletInitializer是一个Spring框架中的抽象类,它用来配置使用基于Java的Spring配置(基于注解的配置) instead of the traditional web.xml file的Web应用程序。
*
* 它扩展了AbstractDispatcherServletInitializer类,并重写了特定的方法来指定Java @Configuration类的位置,DispatcherServlet的映射以及DispatcherServlet的名称。
*
* 关于AbstractAnnotationConfigDispatcherServletInitializer的一些关键点:
*
* 这是一个抽象类,需要扩展它并提供应用程序特定的配置。
* getRootConfigClasses()方法返回配置根应用程序上下文的@Configuration类数组,这个上下文由ContextLoaderListener加载。
* getServletConfigClasses()方法返回配置dispatcher servlet应用程序上下文的@Configuration类。
* getServletMappings()方法返回DispatcherServlet的servlet映射,默认映射到"/"。
* 所以总结一下,它提供了一种基于Java的方式来配置DispatcherServlet以及根应用程序上下文,作为web.xml的替代方案。扩展这个类并重写方法可以只使用Java代码而不需要web.xml就配置一个Spring MVC web应用程序。
*/
public class ServletConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
//加载Spring容器
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[]{SpringConfig.class};
}
//指向SpringMvc配置类,加载SpringMVC容器
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[]{SpringMvcConfig.class};
}
//将哪些请求发给SpringMVC处理
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
//编码过滤器(仅对Body生效)
@Override
protected Filter[] getServletFilters() {
CharacterEncodingFilter filter = new CharacterEncodingFilter();
filter.setEncoding("UTF-8");
return new Filter[]{filter};
}
}
SpringMVC配置类
SpringMvcConfig.java
package com.deepfal.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
/**
* SpringMvc配置类
* 已配置:
* Bean扫描器
* 激活WebMvc功能(主要用于处理REST风格的json数据)
*/
//声明配置类
@Configuration
//Bean扫描器,入参为数组或包名,指向要扫描的包
@ComponentScan({"com.deepfal.controller","com.deepfal.config"})
//@EnableWebMvc是一个Spring MVC框架提供的注解,它的作用是启用Spring MVC框架的默认配置,例如消息转换器,格式化器和验证器等。它还启用了Spring MVC的注解驱动,这样就可以使用注解来处理HTTP请求和响应。
//这里主要用于将对象和json互相转换,用于REST风格
@EnableWebMvc
public class SpringMvcConfig {
}
Spring配置类
SpringConfig.java
package com.deepfal.config;
import org.springframework.context.annotation.*;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
* Spring配置类
* 已配置:
* Bean扫描器
* 属性文件源加载器
* 引入了jdbc和mybatis的配置Bean
* 激活了事务管理功能
*/
//声明配置类
@Configuration
//Bean扫描器
@ComponentScan("com.deepfal.service")
//引入属性资源,用于Jdbc调用连接数据库的参数
@PropertySource("classpath:jdbc.properties")
//引入配置Bean
@Import({JdbcConfig.class,MyBatisConfig.class})
//启用事务管理器
@EnableTransactionManagement
public class SpringConfig {
}
配置拦截器放行静态资源
SpringMvcSupport.java
package com.deepfal.config;
import com.deepfal.config.filter.LoginCheckFilter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import javax.servlet.Filter;
/**
* 配置放行静态资源
* 不走SpringMVC处理
*/
@Configuration
public class SpringMvcSupport extends WebMvcConfigurationSupport {
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/pages/**").addResourceLocations("/pages/");
}
}
Jdbc配置类
JdbcConfig.java
package com.deepfal.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import javax.sql.DataSource;
/**
* Jdbc配置Bean
* 已配置:
* Druid连接池
* 平台事务管理器
*/
public class JdbcConfig {
//从Spring配置类中指向的属性资源文件读取属性
@Value("${jdbc.driver}")
String driver;
@Value("${jdbc.url}")
String url;
@Value("${jdbc.username}")
String username;
@Value("${jdbc.password}")
String password;
//配置Druid数据连接池Bean
@Bean
public DataSource dataSource(){
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(driver);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
//平台事务管理器Bean
@Bean
public PlatformTransactionManager platformTransactionManager(DataSource dataSource){
DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager();
dataSourceTransactionManager.setDataSource(dataSource);
return dataSourceTransactionManager;
}
}
MyBatis配置类
MyBatisConfig.java
package com.deepfal.config;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.Bean;
import javax.sql.DataSource;
/**
* MyBatis配置Bean
* 已配置:
* Sql会话工厂Bean
* Mapper扫描器
*/
public class MyBatisConfig {
@Bean
public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource){
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource);
factoryBean.setTypeAliasesPackage("com.deepfal.pojo");
return factoryBean;
}
@Bean
public MapperScannerConfigurer mapperScannerConfigurer(){
MapperScannerConfigurer msc = new MapperScannerConfigurer();
msc.setBasePackage("com.deepfal.dao");
return msc;
}
}
版权属于:DeepFal
本文链接:https://blog.deepfal.cn/index.php/archives/940/
转载时须注明出处及本声明