zoukankan      html  css  js  c++  java
  • spring整合mybatis,springMVC的0配置文件方式

      0配置文件的形式主要是采用spring3.0提供的@configuration注解和spring容器在启动的时候会加载实现了WebApplicationInitializer的类,并调用其onStartUp的方法的特性去实现.

      具体做法如下:

      1.建立MyWebAppInitializer去实现WebApplicationInitializer接口,并且去重写其onStartUp方法.实际上这个类取代了web.xml的配置.代码如下:

    public class MyWebAppInitializer implements WebApplicationInitializer{
    
        @Override
        public void onStartup(ServletContext servletContext) throws ServletException {
            //相当于在web.xml在配置spring启动用的ContextLoaderListener
            AnnotationConfigWebApplicationContext rootContext=new AnnotationConfigWebApplicationContext();
            rootContext.register(AppConfig.class);
            servletContext.addListener(new ContextLoaderListener(rootContext));
            //相当于在web.xml在配置DispatcherServlet
            AnnotationConfigWebApplicationContext webContext=new AnnotationConfigWebApplicationContext();
            webContext.register(WebConfig.class);
            Dynamic registration = servletContext.addServlet("dispatcher",new DispatcherServlet(webContext));
            registration.setLoadOnStartup(1);
            registration.addMapping("/");
        }
    
    }

      2.建立WebConfig.class.这个类用于取代spring的配置文件springmvc.xml.代码如下:相关注解的解释写在注释中.

    @EnableWebMvc        //开启springmvc的配置
    @Configuration        //开启基于Java类的配置
    @ComponentScan(basePackages="com.xyy.web")
    public class WebConfig extends WebMvcConfigurerAdapter{
        //配置与dispatcherServlet相关联的bean
        @Bean//代表这是一个bean.spring容器会将其放在容器中.
        public ViewResolver viewResolver() {
            InternalResourceViewResolver resolver=new InternalResourceViewResolver();
            resolver.setPrefix("/");
            resolver.setSuffix(".jsp");
            resolver.setExposeContextBeansAsAttributes(true);//使得可以在jsp页面中可以通过${}访问bean
            return resolver;
        }
        //开启静态文件的访问.
        @Override
        public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
            configurer.enable();
        }
        
    }

      3.建立AppConfig.class.它用于取代applicationContext.xml.这里我们使用了c3p0数据库连接池配合mybatis框架使用

    @EnableAspectJAutoProxy//开启自动注解扫描
    @EnableTransactionManagement//配置事务管理
    @Configuration
    @ComponentScan(basePackages="com.xyy")//扫描注解
    public class AppConfig {
        //配置c3p0数据源
        @Bean
        public DataSource dataSource() {
            ComboPooledDataSource dataSource=new ComboPooledDataSource();
            try {
                dataSource.setDriverClass("com.mysql.jdbc.Driver");
            } catch (PropertyVetoException e) {
                e.printStackTrace();
            }
            dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test");
            dataSource.setUser("root");
            dataSource.setPassword("root");
            return dataSource;
        }
        //配置SqlSessionFactoryBean
        @Bean
        public SqlSessionFactoryBean sqlSessionFactory() {
            SqlSessionFactoryBean bean=new SqlSessionFactoryBean();
            bean.setConfigLocation(new ClassPathResource("SqlMapConfig.xml"));
            bean.setDataSource(dataSource());
            return bean;
        }
        //配置开启Mapper扫描
        @Bean
        public MapperScannerConfigurer mapperScannerConfigurer() {
            MapperScannerConfigurer configurer=new MapperScannerConfigurer();
            configurer.setBasePackage("com.xyy.mapper");
            return configurer;
        }
        //配置开启DataSourceTransactionManager
        @Bean
        public DataSourceTransactionManager dataSourceTransactionManager() {
            DataSourceTransactionManager manager=new DataSourceTransactionManager();
            manager.setDataSource(dataSource());
            return manager;
        }
    }

      4.至此,我们就可以正常的建立Controller类书写代码了.不过,不要忘记在对应的类上加上@controller,@service,@repository哦.

      5.此外,为了防止会出现乱码的情况,我们最好再配上spring提供的CharacterEncodingFilter去解决乱码问题.方式如下,也是在MyWebAppInitializer类中配置的:

      

  • 相关阅读:
    docker 删除所有的 docker ps -a 记录
    使用ES6的Promise完美解决回调地狱
    linux查看历史命令history
    linux命令补全 忘记命令只记得开头
    linux更改shell
    java信号量PV操作 解决生产者-消费者问题
    eclipse代码自动提示功能设置
    linux下mysql修改数据库账户root密码
    IntelliJ Idea12 破解码与中文乱码配置
    linux usermod修改用户所在组方法
  • 原文地址:https://www.cnblogs.com/hlhdidi/p/6289060.html
Copyright © 2011-2022 走看看