我真的是很讨厌xml配置文件!
今天正好翻书看到了基于注解配置MVC的开发方式 就有了这篇凌晨12点敲出来的博客
1.创建cn.tmhkc.config的package
创建MyWebConfig.class 继承 WebMvcConfigurerAdapter
package cn.tmhkc.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
@Configuration
@ComponentScan("cn.tmhkc.controller") // 相当于<context:component-scan base-package="cn.tmhkc.controller"></context:component-scan>
@EnableWebMvc
public class MyWebConfig extends WebMvcConfigurerAdapter {
/**
* 相当于springmvc-servlet.xml中的
* <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
* <property name="prefix" value="/"></property>
* <property name="suffix" value=".jsp"></property>
* </bean>
*/
@Bean
public InternalResourceViewResolver setupViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver ();
resolver.setPrefix("/");
resolver.setSuffix(".jsp");
return resolver;
}
}
2.创建WebInitializer.class 继承 AbstractAnnotationConfigDispatcherServletInitializer
package cn.tmhkc.config;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
/**
* 应该是类似于配置上下文
* 入门案例中还无需研究这个方法。
* 以后学到了再补上
*/
@Override
protected Class<?>[] getRootConfigClasses() {
// TODO Auto-generated method stub
return null;
}
/**
* 相当于springmvc-servlet.xml文件的配置
* 启用组件扫描,配置视图解析器,配置静态资源的处理。
* 只用定义返回值
* new Class[] {自定义继承WebMvcConfigurerAdapter那个类.class}
*/
@Override
protected Class<?>[] getServletConfigClasses() {
// TODO Auto-generated method stub
return new Class[] {MyWebConfig.class};
}
/**
* 设置拦截的url
* 将DispatcherServlet映射到"*.do"
* 相当于xml文件中的
* <servlet-mapping>
* <servlet-name>springmvc</servlet-name>
* <url-pattern>*.do</url-pattern>
* </servlet-mapping>
*/
@Override
protected String[] getServletMappings() {
return new String[] { "*.do" };
}
}
3.创建一个测试的controller
package cn.tmhkc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import cn.tmhkc.constant.ControllerConstant;
/**
* 这里都是常规的东西
* @author tmhkc
*
*/
@Controller
public class MyController implements ControllerConstant {
@RequestMapping(WELCOME)
public String home(){
return WELCOME;
}
}
4.开启tomcat测试