springmvc项目,注解方式配置(三)编写Springmvc配置类

四、编写 SpringMVC 配置类

使用springframework框架搭建web项目时,传统上需要配置web.xml和spring-servlet.xml文件。

项目中现在使用servlet 4.0,可以使用 WebApplicationInitializer 来替代原来的web.xml配置,代码如下:

public class WebInitializer implements WebApplicationInitializer {
	
	private static final Logger logger = LogManager.getLogger(WebInitializer.class);

	@Override
	public void onStartup(ServletContext servletContext) throws ServletException {
		logger.info("-------->开始启动web应用");
		
		/*
		 *  Log4jConfigListener: log4j 2日志配置,配置文件为 classpath:log4j2.xml
		 */
		logger.info("-------->载入log4j2配置");
        servletContext.addListener(new Log4jServletContextListener()); 
        Log4jServletFilter log4jServletFilter = new Log4jServletFilter();
        servletContext.addFilter("log4jServletFilter", log4jServletFilter);

        AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
        
        // spring-mvc 上下文
        context.register(WebMvcConfig.class);      
        context.setServletContext(servletContext);
        
        /*
       	 * 创建并注册  DispatcherServlet
         */
        DispatcherServlet dispatcherServlet = new DispatcherServlet(context);
        ServletRegistration.Dynamic dynamic = servletContext.addServlet("dispatcherServlet", dispatcherServlet);
        dynamic.setLoadOnStartup(1);
        dynamic.addMapping("/");
        
        servletContext.addListener(new ContextLoaderListener(context));

        /*
         * CharacterEncodingFilter: 解决中文乱码问题 
         */
        CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
        characterEncodingFilter.setEncoding("utf-8");
        FilterRegistration characterEncodingfilterRegistration =
        		servletContext.addFilter("characterEncodingFilter", characterEncodingFilter);
        characterEncodingfilterRegistration.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), false, "/*");
        
        logger.info("-------->web应用启动完成.");
	}

}

可以用 WebMvcConfigurer 替代原来的spring-servlet.xml配置文件,项目前端采用html,只配置了json解析,不使用jsp解析,如果项目开发需要其他解析,再视情况增加。代码如下:

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.xxxyyyzzz", 
	includeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION, value = {Controller.class})}
)
public class WebMvcConfig implements WebMvcConfigurer{

	private static final Logger logger = LogManager.getLogger(WebMvcConfig.class);
	
	@Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
		logger.info("MVC配置:启用静态资源解析-------->DefaultServletHandlerConfigurer");
        configurer.enable();
    }
	
    @Bean
    public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
    	logger.info("MVC配置:JSON解析-------->MappingJackson2HttpMessageConverter");
    	MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
    	List<MediaType> mediaTypes = new ArrayList<MediaType>();
    	mediaTypes.add(new MediaType("utf-8"));
    	converter.setSupportedMediaTypes(mediaTypes);;
    	return converter;
    }
}

项目中使用 Mybatis管理数据库,以下仅为必要配置项,比如druid资源池配置,应需要更详细的配置。数据库配置类代码如下:

@Configuration
@PropertySource({"classpath:/resources.properties"})	// 资源文件
@EnableTransactionManagement(proxyTargetClass = true)
@MapperScan({"com.xxxyyyzzz.**.dao", "com.xxxyyyzzz.**.mapper"}) // 扫描的包
public class MybatisConfig {
	private static final Logger logger = LogManager.getLogger(MybatisConfig.class);

	/* 
     * 绑定资源属性 
     */  
    @Value("${connection.driverClassName}")  
    String driverClass;  
    @Value("${connection.url}")  
    String url;  
    @Value("${connection.username}")  
    String username;  
    @Value("${connection.password}")  
    String password;
    
    @Bean(name = "dataSource")  
    public DataSource dataSource() throws PropertyVetoException {  
    	logger.info("DataSource配置:载入-------->Druid DataSource配置"); 
    	DruidDataSource dataSource = new DruidDataSource();
    	dataSource.setDriverClassName(driverClass);
    	dataSource.setUrl(url);
    	dataSource.setUsername(username);
        dataSource.setPassword(password);
        dataSource.setInitialSize(1);
        return dataSource;  
    } 

	@Bean
	public DataSourceTransactionManager txManager() throws PropertyVetoException {
    	logger.info("DataSource配置:载入-------->事务管理配置"); 
		return new DataSourceTransactionManager(dataSource());
	}

	@Bean(name = "sqlSessionFactory")
	public SqlSessionFactory sqlSessionFactory() throws Exception {
		logger.info("Mybatis配置:载入-------->sqlSessionFactory配置");
		SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
		sessionFactory.setDataSource(dataSource());
		PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
		sessionFactory.setConfigLocation(resolver.getResource("classpath:mappers.xml"));
		return sessionFactory.getObject();
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值