1.sprigboot
之所以没有配置DelegatingFilterProxy ,是因为sprigboot已经完成自动配置
MyWebConfig类
作用 拦截器
@Configuration
public class MyWebConfig implements WebMvcConfigurer {
@Autowired
private LoginInterceptor loginInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(loginInterceptor).addPathPatterns("/**").excludePathPatterns("/common/getCode", "/common/doLogin", "/commom/upload");
}
}
CorsConfig类
作用 跨域处理
@Configuration
public class CorsConfig {
@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource corsConfigurationSource = new UrlBasedCorsConfigurationSource();
CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.addAllowedOrigin("*");
corsConfiguration.addAllowedMethod("*");
corsConfiguration.addAllowedHeader("*");
corsConfiguration.setAllowCredentials(false);
corsConfigurationSource.registerCorsConfiguration("/**",corsConfiguration );
CorsFilter corsFilter = new CorsFilter(corsConfigurationSource);
return corsFilter;
}
}
2.springmvc(无配置文件形式)
MyAppInit 父容器
public class MyAppInit extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[]{RootConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[]{WebConfig.class};
}
//替代web.xml
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
@Override
protected Filter[] getServletFilters() {
DelegatingFilterProxy delegatingFilterProxy = new DelegatingFilterProxy();
delegatingFilterProxy.setBeanName("getCorsFilter");
return new Filter[]{delegatingFilterProxy};
}
}
RootConfig
package com.shangma.cn.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.sql.DataSource;
@Configuration
@ComponentScan(basePackages = {"com.shangma.cn.service"})
@EnableTransactionManagement
public class RootConfig {
/**
* 数据源配置
*
* @return dataSource
*/
@Bean
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/xxxx?serverTimezone=Asia/Shanghai");
dataSource.setUsername("root");
dataSource.setPassword("root");
return dataSource;
}
/**
* 连接工厂
*
* @return sqlSessionFactoryBean
*/
@Bean
public SqlSessionFactoryBean sqlSessionFactoryBean() {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource());
org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
configuration.setMapUnderscoreToCamelCase(true);
sqlSessionFactoryBean.setConfiguration(configuration);
return sqlSessionFactoryBean;
}
/**
* mapperscan 包扫描
*
* @return mapperScannerConfigurer
*/
@Bean
public MapperScannerConfigurer mapperScannerConfigurer() {
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
mapperScannerConfigurer.setBasePackage("com.shangma.cn.mapper");
return mapperScannerConfigurer;
}
//================service层配置
@Bean
public DataSourceTransactionManager dataSourceTransactionManager() {
DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager();
dataSourceTransactionManager.setDataSource(dataSource());
return dataSourceTransactionManager;
}
@Bean
public JavaMailSender javaMailSender() {
JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
javaMailSender.setDefaultEncoding("utf-8");
javaMailSender.setPassword("VQTTGWVQNQBGKSSF");
javaMailSender.setUsername("zheyuan1997@126.com");
javaMailSender.setHost("smtp.126.com");
return javaMailSender;
}
@Bean
CorsFilter corsFilter(){
UrlBasedCorsConfigurationSource corsConfigurationSource = new UrlBasedCorsConfigurationSource();
CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.addAllowedOrigin("*");
corsConfiguration.addAllowedMethod("*");
corsConfiguration.addAllowedHeader("*");
corsConfiguration.setAllowCredentials(false);
corsConfigurationSource.registerCorsConfiguration("/**",corsConfiguration );
return new CorsFilter(corsConfigurationSource);
}
}
=============
最后WebConfig
package com.shangma.cn.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* @Auther: JAVASM
* @Date: 2021/10/4 19:30
* @Description: WebMvcConfigurer 表示webmvc的配置
*/
@Configuration
@ComponentScan(basePackages = {"com.shangma.cn.controller"})
@EnableWebMvc //注解驱动
public class WebConfig implements WebMvcConfigurer {
@Bean
public StringRedisTemplate stringRedisTemplate() {
RedisConnectionFactory redisConnectionFactory = new JedisConnectionFactory();
return new StringRedisTemplate(redisConnectionFactory);
}
/**
* @param registry 跨域操作
*/
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("*")
.allowedHeaders("*")
.allowCredentials(false) ;
}
}