• 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();
        }
    
    }
    

      

  • 相关阅读:
    群辉:服务器错误 错误代码38
    wireshark filter manualpage
    收集下shell使用笔记
    Android kernel LOGO的更换方法
    java实现截屏
    [转]android4.0.3 修改启动动画和开机声音
    博客搬迁
    idea 2017.3创建springboot项目报无效的源发行版: 1.8或者Unsupported major.minor version 52.0的解决方案
    关于mybatis查询集合返回为[null]的问题
    关于mybatis中resultType返回null的问题
  • 原文地址:https://www.cnblogs.com/walxt/p/14322943.html
Copyright © 2020-2023  润新知