1.配置结构
2.RootConfig(application-context.xml)
package com.ahu.gd.crms.config;
import com.ahu.gd.crms.util.ConfigUtil;
import org.apache.commons.dbcp2.BasicDataSource;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.config.PropertiesFactoryBean;
import org.springframework.context.annotation.*;
import org.springframework.core.env.Environment;
import org.springframework.orm.hibernate5.HibernateTransactionManager;
import org.springframework.orm.hibernate5.LocalSessionFactoryBean;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.annotation.Resource;
import javax.sql.DataSource;
import java.beans.PropertyVetoException;
import java.io.IOException;
import java.util.Properties;
@Configuration
@ComponentScan(basePackages = {"com.ahu.gd.crms.service","com.ahu.gd.crms.dao"})
@EnableTransactionManagement
@EnableAspectJAutoProxy
@PropertySource("classpath:jdbc.properties")
public class RootConfig {
@Resource
private Environment environment;
@Bean(name="hibernateProperties")
public PropertiesFactoryBean hibernatePropertiesFactoryBean() {
return ConfigUtil.propertiesFactoryBean("hibernate.properties");
}
@Bean(name = "dataSource")
public BasicDataSource basicDataSource() throws PropertyVetoException {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setUrl(environment.getProperty("c3p0.url"));
dataSource.setDriverClassName(environment.getProperty("c3p0.driverClass"));
dataSource.setUsername(environment.getProperty("c3p0.username"));
dataSource.setPassword(environment.getProperty("c3p0.password"));
return dataSource;
}
@Bean(name = "sessionFactory")
public LocalSessionFactoryBean localSessionFactoryBean(DataSource dataSource,Properties hibernateProperties) {
LocalSessionFactoryBean localSessionFactoryBean = new LocalSessionFactoryBean();
localSessionFactoryBean.setDataSource(dataSource);
localSessionFactoryBean.setPackagesToScan("com.ahu.gd.crms.model");
localSessionFactoryBean.setHibernateProperties(hibernateProperties);
return localSessionFactoryBean;
}
@Bean(name="txManager")
public HibernateTransactionManager hibernateTransactionManager(SessionFactory sessionFactory) {
return new HibernateTransactionManager(sessionFactory);
}
}
2.WebConfig(springmvc-servlet)
package com.ahu.gd.crms.config;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.thymeleaf.spring4.SpringTemplateEngine;
import org.thymeleaf.spring4.view.ThymeleafViewResolver;
import org.thymeleaf.templateresolver.ITemplateResolver;
import org.thymeleaf.templateresolver.ServletContextTemplateResolver;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"com.ahu.gd.crms.controller"})
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/css/**").addResourceLocations("/css/");
registry.addResourceHandler("/fonts/**").addResourceLocations("/fonts/");
registry.addResourceHandler("/js/**").addResourceLocations("/js/");
}
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(new StringHttpMessageConverter());
FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
ArrayList<MediaType> list = new ArrayList<MediaType>();
list.add(MediaType.valueOf("text/html;charset=UTF-8"));
list.add(MediaType.valueOf("application/json;charset=UTF-8"));
fastJsonHttpMessageConverter.setSupportedMediaTypes(list);
converters.add(fastJsonHttpMessageConverter);
}
@Bean(name = "thymeleafResolver")
public ServletContextTemplateResolver servletContextTemplateResolver() {
ServletContextTemplateResolver resolver = new ServletContextTemplateResolver();
resolver.setPrefix("/WEB-INF/view/");
resolver.setSuffix(".html");
resolver.setTemplateMode("HTML5");
resolver.setCacheable(false);
resolver.setCharacterEncoding("UTF-8");
return resolver;
}
@Bean(name = "templateEngine")
public SpringTemplateEngine springTemplateEngine(ServletContextTemplateResolver thymeleafResolver) {
SpringTemplateEngine springTemplateEngine = new SpringTemplateEngine();
springTemplateEngine.setTemplateResolver(thymeleafResolver);
return springTemplateEngine;
}
@Bean
public ThymeleafViewResolver thymeleafViewResolver(SpringTemplateEngine templateEngine) {
ThymeleafViewResolver resolver = new ThymeleafViewResolver();
resolver.setTemplateEngine(templateEngine);
resolver.setCharacterEncoding("UTF-8");
return resolver;
}
}
3.WebAppInitializer(web.xml)
package com.ahu.gd.crms.config;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[]{RootConfig.class};
}
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[]{WebConfig.class};
}
protected String[] getServletMappings() {
return new String[]{"/"};
}
}
问题
1.启动时爆出com.mchange.v2.resourcepool.CannotAcquireResourceException
原因:url写错,使得无法获得连接
2.部署项目到tomcat没有任何日志输出
解决办法:在target/classes下添加logging.properties
handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################
org.apache.juli.FileHandler.level = FINE
org.apache.juli.FileHandler.directory = ${catalina.base}/logs
org.apache.juli.FileHandler.prefix = error-debug.
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter