SSM项目转SpringBoot项目

//对于SpringBoot所推崇的去除xml化编程需求,将原始的spring-*.xml文件使用配置类的方式进行注入

//mybatis

// 该标签表示将这个类注入到Spring的IOC容器内
@Configuration
// 配置mybatis Mapper的扫描路径
@MapperScan("com.swust.emporium.dao")
public class DataSourceConfiguration {
    // 定义需要注入的JDBC连接变量

    @Value("${jdbc.url}")
    private String jdbcUrl;
    @Value("${jdbc.driver}")
    private String jdbcDriver;
    @Value("${jdbc.username}")
    private String jdbcUserName;
    @Value("${jdbc.password}")
    private String jdbcPassword;

    /**
     * 生成与Spring-dao.xml对应的bean标签 dataSource
     */
    @Bean(name = "dataSource")
    public ComboPooledDataSource createDataSource(){
        // 创建Bean对象
        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        // 设置配置信息
        dataSource.setJdbcUrl(jdbcUrl);
        try {
            dataSource.setDriverClass(jdbcDriver);
        } catch (PropertyVetoException e) {
            e.printStackTrace();
        }
        // 对用户名密码进行解密
        String name = DESUtil.getDecryptString(jdbcUserName);

        dataSource.setUser(name);

        String password = DESUtil.getDecryptString(jdbcPassword);
        dataSource.setPassword(password);
        // 设置固有属性
        dataSource.setMaxPoolSize(30);
        dataSource.setMinPoolSize(10);
        // 关闭连接后不自动提交
        dataSource.setAutoCommitOnClose(false);
        dataSource.setCheckoutTimeout(10000);
        dataSource.setAcquireRetryAttempts(2);

        return dataSource;
    }
}
@Configuration
public class SessionFactoryConfiguration {


    private static String mybatisConfigFile;

    private static String mapperPath;

    /**
     * 静态属性需要通过setter方法注入 不可以直接注入
     */

    // 基本属性
    @Value("${mybatis_config_file}")
    public void setMybatisConfigFile(String mybatisConfigFile) {
        SessionFactoryConfiguration.mybatisConfigFile = mybatisConfigFile;
    }
    // mybatis mapper文件的所在路径
    @Value("${mapper_path}")
    public void setMapperPath(String mapperPath) {
        SessionFactoryConfiguration.mapperPath = mapperPath;
    }

    // 实体类所在的package
    @Value("${type_alias_package}")
    private String typeAliasPackage;
    @Autowired
    private DataSource dataSource;

    /**
     *  创建SqlSessionFactoryBean实例对象,并设置配置属性
     * @return
     */
    @Bean(name = "sqlSessionFactory")
    public SqlSessionFactoryBean sqlSessionFactoryBean() throws IOException {

        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource);
        //mybatis 的配置文件
        sqlSessionFactoryBean.setConfigLocation(new ClassPathResource(mybatisConfigFile));

        PathMatchingResourcePatternResolver pathMatchingResourcePatternResolver
                = new PathMatchingResourcePatternResolver();
        String packageSearchPath = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX + mapperPath;

        sqlSessionFactoryBean.setMapperLocations(pathMatchingResourcePatternResolver.getResources(packageSearchPath));

        sqlSessionFactoryBean.setTypeAliasesPackage(typeAliasPackage);

        return sqlSessionFactoryBean;

    }

}

//service

// Spring事物配置
@Configuration
// 开启事务支持
@EnableTransactionManagement
public class TransactionManagementConfiguration implements TransactionManagementConfigurer {


    @Autowired
    private DataSource dataSource;

    /***
     * 关于事务管理,需要返回Platform里边的PlatformTransactionManager的实现
     * @return
     */
    @Override
    public PlatformTransactionManager annotationDrivenTransactionManager() {
        return new DataSourceTransactionManager(dataSource);
    }


}

//springmvc controller

@Configuration
//将mvc交给我们自己管理
//等价于标签 <mvc:annotation-driven>
@EnableWebMvc
public class MvcConfiguration implements WebMvcConfigurer,ApplicationContextAware {


    //Spring 容器
    private ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) {
        this.applicationContext = applicationContext;
    }


    /**
    * 定义默认的请求处理器
    */

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {

        configurer.enable();
    }


    /**
     * 静态资源配置
     * 将/upload 映射为 D:/projectdev/image/upload
     * 需要自己更改
     * @param registry
     */
//    @Override
//    public void addResourceHandlers(ResourceHandlerRegistry registry) {
//        registry.addResourceHandler("/upload/**")
//                .addResourceLocations("file:D:\projectdev\image\upload\");
//    }
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/root/imgdatas/upload/images/**")
                .addResourceLocations("file:/root/imgdatas/upload/images/");
        registry.addResourceHandler("/root/imgdatas/project/**")
                .addResourceLocations("file:/root/imgdatas/project");
    }


    /*
    * 创建viewResolver
    * */

    @Bean(name = "viewResolver")
    public ViewResolver viewResolver(){

        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setApplicationContext(applicationContext);
        viewResolver.setCache(false);
        viewResolver.setPrefix("/WEB-INF/html/");
        viewResolver.setSuffix(".html");

        return viewResolver;

    }

    /*
    * 文件上传解析器
    * */
    @Bean(name = "multipartResolver")
    public CommonsMultipartResolver multipartResolver(){

        CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();

        multipartResolver.setDefaultEncoding("utf-8");

        multipartResolver.setMaxInMemorySize(20971520);

        multipartResolver.setMaxUploadSize(20971520);

        return multipartResolver;
    }


    //注册servlet 验证码
    @Bean
    public ServletRegistrationBean servletRegistrationBean(){
        ServletRegistrationBean servlet = new ServletRegistrationBean(new KaptchaServlet(),"/kaptcha");
        servlet.addInitParameter("kaptcha.border","no");
        servlet.addInitParameter("kaptcha.textproducer.font.color","red");
        servlet.addInitParameter("kaptcha.image.width","135");
        servlet.addInitParameter("kaptcha.textproducer.char.string","ACDEFHKGPRSTWX23456789");
        servlet.addInitParameter("kaptcha.image.height","50");
        servlet.addInitParameter("kaptcha.textproducer.font.size","43");
        servlet.addInitParameter("kaptcha.noise.color","black");
        servlet.addInitParameter("kaptcha.textproducer.char.length","4");
        servlet.addInitParameter("kaptcha.textproducer.font.names","Arial");
        return servlet;
    }


//    @Bean
//    public FilterRegistrationBean filterRegistrationBean(){
//
//        CodingFilter codingFilter = new CodingFilter();
//
//        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(codingFilter);
//        filterRegistrationBean.addUrlPatterns("/*");
//        return filterRegistrationBean;
//
//    }


//    @Bean
//    public ServletListenerRegistrationBean servletListenerRegistrationBean(){
//        PathListener pathListener = new PathListener();
//        ServletListenerRegistrationBean servletListenerRegistrationBean = new ServletListenerRegistrationBean(pathListener);
//        return servletListenerRegistrationBean;
//    }
    
}

// interceptor 拦截器

@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {

        registry.addInterceptor(frontendLoginInterceptor())
            .excludePathPatterns("/frontend/getoperationlogin")
            .excludePathPatterns("/frontend/login")
            .addPathPatterns("/frontend/**");

        registry.addInterceptor(shopLoginInterceptor())
                .addPathPatterns("/shopadmin/**");

        registry.addInterceptor(shopPermissionInterceptor())
                .excludePathPatterns("/shopadmin/shoplist","/shopadmin/getshoplist","/shopadmin/getshopinitinfo")
                .excludePathPatterns("/shopadmin/registershop","/shopadmin/shopoperation")
                .excludePathPatterns("/shopadmin/shopmanagement","/shopadmin/getshopmanagementinfo")
                .addPathPatterns("/shopadmin/**");

    }
    @Bean
    public ShopLoginInterceptor shopLoginInterceptor(){
        return new ShopLoginInterceptor();
    }
    @Bean
    public ShopPermissionInterceptor shopPermissionInterceptor(){
        return new ShopPermissionInterceptor();
    }

    @Bean
    public FrontendLoginInterceptor frontendLoginInterceptor(){
        return new FrontendLoginInterceptor();
    }

}

  

原文地址:https://www.cnblogs.com/walxt/p/14322943.html