詳解如何全注解方式構(gòu)建SpringMVC項目
簡述
SpringBoot對Spring的的使用做了全面的封裝,使用SpringBoot大大加快了開發(fā)進程,但是如果不了解Spring的特性,使用SpringBoot時會有不少問題
目前網(wǎng)上流傳使用IDEA比Eclipse效率更加高,在搭建項目時,也嘗試使用IDEA,但是由于習(xí)慣問題,最終還是使用了Eclipse,以后也別再折騰了,專注于開發(fā)本身更加重要
這是個簡單的SpringMVC項目,目的在于幫助理解Spring4的SpringMVC的搭建,采用注解方式。項目簡單得不能再簡單,采用tomcat+spring+springmvc+h2方式搭建。項目啟動后,在訪問欄輸入訪問地址http://localhost:8080/testspringmvc/后直接訪問,利用訪問地址http://localhost:8080/testspringmvc/user/10001檢測功能是否正常運行,輸出結(jié)果是為一串JSON字串(java直接轉(zhuǎn)換)
文章分為3部分,項目搭建,代碼說明,以及在這過程中遇到的問題的小結(jié)
項目搭建
依次選擇File、New、Spring Legacy Project
在彈出的對話框中選擇Spring MVC項目,填寫項目其他信息
最后生成的SpringMVC項目的POM文件中要做些修改,因為這時生成的項目使用的是Spring3,而這次的目的是練習(xí)使用Spring4 (這里做個標志,以后有時間回來看看怎樣可以直接生成Spring4的)
至此,項目已經(jīng)生成,項目文件結(jié)構(gòu)如下
代碼說明
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類,重寫其方法實現(xiàn)web項目的配置,其中g(shù)etRootConfigClasses方法定義了的配置類將用于ContextLoaderListener應(yīng)用上下文的bean,getServletConfigClasses方法用于定義DispatcherServlet應(yīng)用上下文中的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配置類
最后是業(yè)務(wù)相關(guān)配置類
@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數(shù)據(jù)庫,所以還需要引入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); } }
問題小結(jié)
1、提供數(shù)據(jù)庫插入語句時,正確的是
insert into User values(10001, 'mvc', '123456', 'm', 'vc', 'mvc@m24.com');
在開始時使用雙引號,后臺出現(xiàn)未識別列的的錯誤,經(jīng)查找
2、使用@ResponseBody時,提示找不到合適的轉(zhuǎn)換器,要引入依賴
<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
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
java 進程是如何在Linux服務(wù)器上進行內(nèi)存分配的
這篇文章主要介紹了java 進程是如何在Linux服務(wù)器上進行內(nèi)存分配的,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2020-11-11Springboot實現(xiàn)Java郵件任務(wù)過程解析
這篇文章主要介紹了Springboot實現(xiàn)Java郵件任務(wù)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-09-09Java獲取網(wǎng)頁數(shù)據(jù)步驟方法詳解
這篇文章主要介紹了Java獲取網(wǎng)頁數(shù)據(jù)步驟方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-03-03