zoukankan      html  css  js  c++  java
  • 使用java类代替web.xml配置(实训项目开发)

    使用java类代替web.xml配置(实训项目开发)

    使用spring-webmvc依赖包中的AbstractAnnotationConfigDispatcherServletInitializer抽象方法代替web项目中的xml配置。
    AbstractAnnotationConfigDispatcherServletInitializer的任意类都会自动配置DispatcherServlet和Spring应用上下文,Spring应用上下文会位于应用程序的servlet上下文中。

    使用Java类代替web.xml的配置非常简单,完全可以套用模板,下面就是代码

    1.编写总配置类

     1 public class EpidemicApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
     2 /**
     3 * 用来配置ContextLoaderListener创建对应上下文的bean
     4 * @return
     5 */
     6 @Override
     7 protected Class<?>[] getRootConfigClasses() {
     8 //Spring相关配置
     9 return new Class[]{SpringConfig.class};
    10 //花括号内填写Spring配置的类名或者路径,这里的名字是SpringConfig.class
    11 }
    12 
    13 /**
    14 * 用于定义DispatcherServlet应用上下文的bean
    15 * @return
    16 */
    17 @Override
    18 protected Class<?>[] getServletConfigClasses() {
    19 //SpringMVC相关配
    20 return new Class[]{SpringMVCConfig.class};
    21 //花括号内填写SpringMvc配置的类名或者路径,这里的名字是SpringMVCConfig.class
    22 }
    23 
    24 /**
    25 * 配置拦截器
    26 * @return
    27 */
    28 @Override
    29 protected String[] getServletMappings() {
    30 //返回映射到DispatcherServlet(前端控制器)的请求路径
    31 return new String[]{"/"};
    32 //花括号内填写需要拦截的页面,
    33 }
    34 }

    如果使用idea开发项目,在需要重写方法时可以使用alt+insert键来快速重写方法

    2.编写Spring配置类

    使用@Configuration、@ComponentScan(组件扫描)和@EnableTransactionManagement等注解标签配置

    ① @Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。

    ② @ComponentScan 注解默认会扫描该类所在的包下所有的配置类,相当于之前的<context:component-scan>

    ③ @EnableTransactionManagement 用于开启事务支持

     1 /**
     2 * Spring相关配置(替换掉了spring-bean.xml和spring-tx.xml)
     3 */
     4 @Configuration
     5 @ComponentScan(excludeFilters = @ComponentScan.Filter(type= FilterType.ANNOTATION,classes = Controller.class))
     6 @EnableTransactionManagement //启用事务管理器
     7 public class SpringConfig {
     8 @Bean
     9 /*
    10 *平台事务管理器,这里的方法名是transactionManager
    11 */
    12 public PlatformTransactionManager transactionManager(DataSource dataSource){
    13 //创建数据源事务管理器,数据源可以在MyBatis里配置
    14 DataSourceTransactionManager transactionManager = new DataSourceTransactionManager();
    15 //DataSourceTransactionManager实现类
    16 transactionManager.setDataSource(dataSource);
    17 return transactionManager;
    18 }
    19 
    20 }

    3.编写SpringMvc配置类

    @Autowired 注解可以对类成员变量、方法及构造函数进行标注,让 spring 完成 bean 自动装配的工作。

     1 /**
     2 * springmvc相关配置(替换掉了springmvc.xml)
     3 */
     4 @Configuration
     5 @EnableWebMvc
     6 @ComponentScan(includeFilters = @ComponentScan.Filter(type= FilterType.ANNOTATION,classes = Controller.class))
     7 //继承WebMvcConfigurationSupport类也可以,但是这个类需要重写的方法比较多,所以这里继承了WebMvcConfigurerAdapter类
     8 public class SpringMVCConfig extends WebMvcConfigurerAdapter {
     9 @Autowired
    10 private DateConverter dateConverter;
    11 /**
    12 * 添加视图控制器,如果没有指定,就默认访问这个界面
    13 * @param registry
    14 */
    15 @Override
    16 public void addViewControllers(ViewControllerRegistry registry) {
    17 registry.addViewController("/").setViewName("epidemic");//访问的是epidemic.jsp,如果扩展名就需要配置视图解析器来定义扩展名
    18 }
    19 
    20 /**
    21 * 配置视图解析器(前后缀)
    22 * @param registry
    23 */
    24 @Override
    25 public void configureViewResolvers(ViewResolverRegistry registry) {
    26 //定义了一个内部资源视图解析器(InternalResourceViewResolvers)
    27 registry.jsp("/",".jsp");
    28 }
    29 
    30 /**
    31 * 配置日期转换器
    32 * @param registry
    33 */
    34 @Override
    35 public void addFormatters(FormatterRegistry registry) {
    36 registry.addConverter(dateConverter);
    37 }
    38 
    39 /**
    40 * 如果没有匹配到action.就使用servlet默认的访问
    41 * @param configurer
    42 */
    43 @Override
    44 public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
    45 //简单来说,就是为给静态资源放行
    46 configurer.enable();
    47 }
    48 }
  • 相关阅读:
    Windows netstat 查看端口、进程占用
    nginx开启gzip
    linux查看内存
    linux查看进程、端口
    linux查看磁盘信息
    vmware克隆一台机器后修改etho
    java对象访问
    学生基本信息管理
    作业09-异常
    博客作业06--图
  • 原文地址:https://www.cnblogs.com/zenglintao/p/12839510.html
Copyright © 2011-2022 走看看