详解如何全注解方式构建SpringMVC项目

作者:m2492565210 时间:2023-08-13 07:14:41 

简述

SpringBoot对Spring的的使用做了全面的封装,使用SpringBoot大大加快了开发进程,但是如果不了解Spring的特性,使用SpringBoot时会有不少问题

目前网上流传使用IDEA比Eclipse效率更加高,在搭建项目时,也尝试使用IDEA,但是由于习惯问题,最终还是使用了Eclipse,以后也别再折腾了,专注于开发本身更加重要

这是个简单的SpringMVC项目,目的在于帮助理解Spring4的SpringMVC的搭建,采用注解方式。项目简单得不能再简单,采用tomcat+spring+springmvc+h2方式搭建。项目启动后,在访问栏输入访问地址http://localhost:8080/testspringmvc/后直接访问,利用访问地址http://localhost:8080/testspringmvc/user/10001检测功能是否正常运行,输出结果是为一串JSON字串(java直接转换)

文章分为3部分,项目搭建,代码说明,以及在这过程中遇到的问题的小结

项目搭建

依次选择File、New、Spring Legacy Project

详解如何全注解方式构建SpringMVC项目

在弹出的对话框中选择Spring MVC项目,填写项目其他信息

详解如何全注解方式构建SpringMVC项目

最后生成的SpringMVC项目的POM文件中要做些修改,因为这时生成的项目使用的是Spring3,而这次的目的是练习使用Spring4 (这里做个标志,以后有时间回来看看怎样可以直接生成Spring4的)

至此,项目已经生成,项目文件结构如下

详解如何全注解方式构建SpringMVC项目

代码说明


public class TestMVCInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
 @Override
 protected Class<?>[] getRootConfigClasses()
 {
   return new Class<?>[] { RootConfig.class };
 }

@Override
 protected Class<?>[] getServletConfigClasses() {
   return new Class<?>[] { WebConfig.class };
 }

@Override
 protected String[] getServletMappings() {
   return new String[] { "/" };
 }
}

Spring4中通过继承AbstractAnnotationConfigDispatcherServletInitializer类,重写其方法实现web项目的配置,其中getRootConfigClasses方法定义了的配置类将用于ContextLoaderListener应用上下文的bean,getServletConfigClasses方法用于定义DispatcherServlet应用上下文中的bean,getServletMappings方法将DispatcherServlet映射到"/"


@Configuration
@EnableWebMvc
@ComponentScan("com.m24.controller")
public class WebConfig extends WebMvcConfigurerAdapter {
 @Bean
 public ViewResolver viewResolver() {
   InternalResourceViewResolver resolver = new InternalResourceViewResolver();
   resolver.setPrefix("/WEB-INF/views/");
   resolver.setSuffix(".jsp");
   return resolver;
 }

@Override
 public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
   configurer.enable();
 }

@Override
 public void addResourceHandlers(ResourceHandlerRegistry registry) {
   super.addResourceHandlers(registry);
 }
}

此处注意的是使用@EnableWebMvc,是SpringMVC配置类

最后是业务相关配置类


@Configuration
@Import(DataConfig.class)
@ComponentScan(basePackages = {"com.m24"},
 excludeFilters = @Filter(type=FilterType.CUSTOM, value=RootConfig.WebPackage.class))
public class RootConfig {
 public static class WebPackage extends RegexPatternTypeFilter {
   public WebPackage() {
     super(Pattern.compile("com.m24.controller"));
   }
 }
}

由于该配置类中使用了H2数据库,所以还需要引入H2的配置类


@Import(DataConfig.class)

@Configuration
public class DataConfig {
 @Bean
 public DataSource dataSource() {
   return new EmbeddedDatabaseBuilder()
       .setType(EmbeddedDatabaseType.H2)
       .addScript("schema.sql")
       .build();
 }

@Bean
 public JdbcOperations jdbcTemplate(DataSource dataSource) {
   return new JdbcTemplate(dataSource);
 }
}

问题小结

1、提供数据库插入语句时,正确的是

insert into User values(10001, 'mvc', '123456', 'm', 'vc', 'mvc@m24.com');

在开始时使用双引号,后台出现未识别列的的错误,经查找

详解如何全注解方式构建SpringMVC项目

2、使用@ResponseBody时,提示找不到合适的转换器,要引入依赖


<dependency>
     <groupId>com.fasterxml.jackson.core</groupId>
     <artifactId>jackson-core</artifactId>
     <version>2.5.0</version>
   </dependency>
   <dependency>
     <groupId>com.fasterxml.jackson.core</groupId>
     <artifactId>jackson-annotations</artifactId>
     <version>2.5.0</version>
   </dependency>
   <dependency>
     <groupId>com.fasterxml.jackson.core</groupId>
     <artifactId>jackson-databind</artifactId>
     <version>2.5.0</version>
   </dependency>

3、由于使用注解方式,没有web.xml文件,项目报错,缺失web.xml文件,pom文件中添加


<plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-war-plugin</artifactId>
       <version>2.6</version>
       <configuration>
         <failOnMissingWebXml>false</failOnMissingWebXml>
       </configuration>
</plugin>

4、定义java版本


<!-- define the project compile level -->
     <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-compiler-plugin</artifactId>
       <version>2.3.2</version>
       <configuration>
         <source>1.8</source>
         <target>1.8</target>
       </configuration>
     </plugin>

5、指定项目名


<finalName>testspringmvc</finalName>

代码地址:https://github.com/m2492565210/testspringmvc

来源:http://www.cnblogs.com/m2492565210/p/8328070.html

标签:全注解,构建,SpringMVC
0
投稿

猜你喜欢

  • C#的正则表达式Regex类使用简明教程

    2021-11-16 12:47:32
  • Android实现倒计时效果

    2021-10-13 03:25:29
  • Android刮刮卡效果实现代码

    2023-08-24 01:29:58
  • Android自定义Toast样式实现方法详解

    2022-06-28 01:24:10
  • C#简单实现防止多个程序运行的方法

    2021-07-31 04:36:27
  • IDEA Ui设计器JFormDesigner 永久激活插件+注册机(亲测一直在用)

    2022-10-23 18:44:46
  • Mybatis-plus多数据源配置的两种方式总结

    2023-07-24 05:22:48
  • jdk15的安装与配置全过程记录

    2023-01-06 05:45:10
  • MyBatis的注解使用、ORM层优化方式(懒加载和缓存)

    2023-04-24 09:16:13
  • Java中的静态内部类详解及代码示例

    2021-11-25 08:50:00
  • Java for循环几种写法整理

    2023-09-12 01:25:58
  • C#编程实现QQ界面的方法

    2023-02-05 23:35:45
  • 详解在spring boot中消息推送系统设计与实现

    2023-05-28 04:17:00
  • java向多线程中传递参数的三种方法详细介绍

    2023-07-11 21:52:55
  • Java开发人员需知的十大戒律

    2023-09-17 07:33:50
  • 基于android中权限的集合汇总

    2023-04-06 09:32:35
  • java多线程累加计数的实现方法

    2021-07-19 12:10:36
  • Spring Cloud Alibaba Nacos Config加载配置详解流程

    2022-03-24 23:06:01
  • Java SpringMVC数据响应超详细讲解

    2022-04-08 15:10:26
  • C#多线程系列之async和await用法详解

    2021-05-28 18:19:08
  • asp之家 软件编程 m.aspxhome.com