代碼配置:
/*
*Servlet3.0提供了ServletContainerInitializer來(lái)實(shí)現(xiàn)容器啟動(dòng)時(shí)注冊(cè)
*Servlet佑刷、Filter慎冤、Listener叠蝇,它可以用來(lái)替代web.xml文件,而Spring mvc
*提供了更為簡(jiǎn)單的WebApplicationInitializer接口颅停,并提供了一個(gè)
*AbstractContextLoaderInitializer卷谈,它可以動(dòng)態(tài)注冊(cè)DispatcherServlet
*為了實(shí)現(xiàn)零配置吸重,Spring直接給我們提供了一個(gè)現(xiàn)成的類
*/
org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer
例如:
public class MyWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
//返回配置Ioc容器的類的類對(duì)象
return new Class[]{AppConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
//返回配置Spring MVC的類的類對(duì)象
return new Class[]{WebConfig.class};
}
@Override
protected String[] getServletMappings() {
//返回配置的urlPatterns
return new String[] {"/"};
}
}
接著是Ioc容器的配置,給出以下模板
@Configuration //表示這是一個(gè)配置
@ComponentScan(basePackages = "com.qfedu.springmvc") //掃描該包下面的所有打了spring注解的類
@EnableAspectJAutoProxy //允許AspectJ自動(dòng)生成代理
@EnableTransactionManagement //啟用注解事務(wù)怪瓶,即可以使用@Transactional注解來(lái)控制事務(wù)
public class AppConfig {
@Bean
public DataSource dataSource() {
BasicDataSource source = new BasicDataSource();
source.setDriverClassName("com.mysql.jdbc.Driver");
source.setUsername("root");
source.setPassword("ily");
source.setUrl("jdbc:mysql://localhost:8080/springmvc?"
+ "useUnicode=true&characterEncoding=utf8");
source.setInitialSize(10);
return source;
}
@Bean
public LocalSessionFactoryBean sessionFactory(DataSource source) {
LocalSessionFactoryBean bean = new LocalSessionFactoryBean();
bean.setDataSource(source);
bean.setHibernateProperties(getHibernateProperties());
bean.setAnnotatedPackages("com.qfedu.springmvc.entiy");
return bean;
}
@Bean
public HibernateTransactionManager transactionManager(SessionFactory sessionFactory) {
return new HibernateTransactionManager(sessionFactory);
}
private Properties getHibernateProperties() {
Properties prop = new Properties();
prop.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL57InnoDBDialect");
prop.setProperty("hibernate.show_sql", "true");
prop.setProperty("hibernate.format_sql", "true");
return prop;
}
}
spring mvc配置萧落,作用與*-servlet.xml文件相當(dāng)
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.qfedu.springmvc.controller")
/**
* 繼承 WebMvcConfigurerAdapter,實(shí)現(xiàn)靜態(tài)資源的處理
*/
public class WebConfig extends WebMvcConfigurerAdapter {
@Bean
public ViewResolver internalResourceViewResolver() {
InternalResourceViewResolver viewResolver
= new InternalResourceViewResolver("/WEB-INF/jsp/", ".jsp");
viewResolver.setViewClass(JstlView.class);
return viewResolver;
}
/**
*配置一個(gè)處理程序來(lái)轉(zhuǎn)發(fā)未處理的請(qǐng)求洗贰,轉(zhuǎn)發(fā)到Servlet容器的“默認(rèn)”servlet找岖。
*/
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}