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

网友投稿 369 2023-01-20


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

简述

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的)

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

代码说明

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');

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

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

com.fasterxml.jackson.core

jackson-core

2.5.0

com.fasterxml.jackson.core

jackson-annotations

2.5.0

com.fasterxml.jackson.core

jackson-databind

2.5.0

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

org.apache.maven.plugins

maven-war-plugin

2.6

false

4、定义java版本

org.apache.maven.plugins

maven-compiler-plugin

2.3.2

1.8

1.8

5、指定项目名

testspringmvc

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:程序员常用接口管理工具(程序员常用接口管理工具包括)
下一篇:服装研发管理平台招聘(服装研发管理平台招聘信息)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~