全注解方式構建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時,提示找不到合適的轉換器,要引入依賴

        <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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM