经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Spring » 查看文章
详解如何全注解方式构建SpringMVC项目
来源:jb51  时间:2018/10/20 15:38:30  对本文有异议

简述

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

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

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

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

代码说明

  1. public class TestMVCInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
  2. @Override
  3. protected Class<?>[] getRootConfigClasses()
  4. {
  5. return new Class<?>[] { RootConfig.class };
  6. }
  7.  
  8. @Override
  9. protected Class<?>[] getServletConfigClasses() {
  10. return new Class<?>[] { WebConfig.class };
  11. }
  12.  
  13. @Override
  14. protected String[] getServletMappings() {
  15. return new String[] { "/" };
  16. }
  17. }

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

  1. @Configuration
  2. @EnableWebMvc
  3. @ComponentScan("com.m24.controller")
  4. public class WebConfig extends WebMvcConfigurerAdapter {
  5. @Bean
  6. public ViewResolver viewResolver() {
  7. InternalResourceViewResolver resolver = new InternalResourceViewResolver();
  8. resolver.setPrefix("/WEB-INF/views/");
  9. resolver.setSuffix(".jsp");
  10. return resolver;
  11. }
  12.  
  13. @Override
  14. public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
  15. configurer.enable();
  16. }
  17.  
  18. @Override
  19. public void addResourceHandlers(ResourceHandlerRegistry registry) {
  20. super.addResourceHandlers(registry);
  21. }
  22. }

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

最后是业务相关配置类

  1. @Configuration
  2. @Import(DataConfig.class)
  3. @ComponentScan(basePackages = {"com.m24"},
  4. excludeFilters = @Filter(type=FilterType.CUSTOM, value=RootConfig.WebPackage.class))
  5. public class RootConfig {
  6. public static class WebPackage extends RegexPatternTypeFilter {
  7. public WebPackage() {
  8. super(Pattern.compile("com.m24.controller"));
  9. }
  10. }
  11. }

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

  1. @Import(DataConfig.class)
  1. @Configuration
  2. public class DataConfig {
  3. @Bean
  4. public DataSource dataSource() {
  5. return new EmbeddedDatabaseBuilder()
  6. .setType(EmbeddedDatabaseType.H2)
  7. .addScript("schema.sql")
  8. .build();
  9. }
  10.  
  11. @Bean
  12. public JdbcOperations jdbcTemplate(DataSource dataSource) {
  13. return new JdbcTemplate(dataSource);
  14. }
  15. }

问题小结

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

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

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

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

  1. <dependency>
  2. <groupId>com.fasterxml.jackson.core</groupId>
  3. <artifactId>jackson-core</artifactId>
  4. <version>2.5.0</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>com.fasterxml.jackson.core</groupId>
  8. <artifactId>jackson-annotations</artifactId>
  9. <version>2.5.0</version>
  10. </dependency>
  11. <dependency>
  12. <groupId>com.fasterxml.jackson.core</groupId>
  13. <artifactId>jackson-databind</artifactId>
  14. <version>2.5.0</version>
  15. </dependency>

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

  1. <plugin>
  2. <groupId>org.apache.maven.plugins</groupId>
  3. <artifactId>maven-war-plugin</artifactId>
  4. <version>2.6</version>
  5. <configuration>
  6. <failOnMissingWebXml>false</failOnMissingWebXml>
  7. </configuration>
  8. </plugin>

4、定义java版本

  1. <!-- define the project compile level -->
  2. <plugin>
  3. <groupId>org.apache.maven.plugins</groupId>
  4. <artifactId>maven-compiler-plugin</artifactId>
  5. <version>2.3.2</version>
  6. <configuration>
  7. <source>1.8</source>
  8. <target>1.8</target>
  9. </configuration>
  10. </plugin>

5、指定项目名

  1. <finalName>testspringmvc</finalName>

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号