Gredle搭建SSM框架(纯注解版)

接下来讲解基于Gredle工具、以纯注解的方式搭建SSM框架的开发环境。

搭建环境:

1.Gredle4.8;

2.IDEA2018.2.3;

1.首先需要创建一个Gredle项目,勾选java和web两个选项,之后GroupID和项目名称自定义即可;

2. 在build.gradle文件中导入jar文件,如下:

plugins {
    id 'java'
    id 'war'
}

group 'xyz.lsm1998'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    // jstl
    compile "javax.servlet:jstl:1.2"
    // servlet3.1
    compile "javax.servlet:javax.servlet-api:3.1.0"
    // spring框架系列
    compile "org.springframework:spring-web:5.0.8.RELEASE"
    compile "org.springframework:spring-core:5.0.8.RELEASE"
    compile "org.springframework:spring-beans:5.0.8.RELEASE"
    compile "org.springframework:spring-webmvc:5.0.8.RELEASE"
    compile "org.springframework:spring-tx:5.0.8.RELEASE"
    compile "org.springframework:spring-context:5.0.8.RELEASE"
    compile "org.springframework:spring-context-support:5.0.8.RELEASE"
    compile "org.springframework:spring-jdbc:5.0.8.RELEASE"
    compile "org.springframework:spring-test:5.0.8.RELEASE"
    compile "org.springframework:spring-aop:5.0.8.RELEASE"
    compile "org.aspectj:aspectjweaver:1.8.9"
    // 阿里巴巴连接池
    compile "com.alibaba:druid:1.1.7"
    // mysql
    compile "mysql:mysql-connector-java:5.1.46"
    // mybatis框架
    compile "org.mybatis:mybatis-spring:1.3.2"
    compile "org.mybatis:mybatis:3.4.6"
    // gson
    compile "com.google.code.gson:gson:2.8.0"
}

3.在src/main/java文件下创建一个配置文件包,xyz.lsm1998.config,这个包内放置所有的配置类,首先编写一个容器初始化的配置类SpringServletContainerInitializer:

package xyz.lsm1998.config;

import org.springframework.core.annotation.AnnotationAwareOrderComparator;
import org.springframework.web.WebApplicationInitializer;

import javax.servlet.ServletContainerInitializer;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.HandlesTypes;
import java.lang.reflect.Modifier;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;

/**
 * ServletContainerInitializer 是 Servlet 3.0 新增的一个接口,
 * 主要用于在容器启动阶段通过自定义的方式注册Filter, Servlet以及Listener,
 * 以取代通过web.xml配置注册,利于开发内聚的web应用框架。
 * 对于简单的web应用来说,这个类是可以省略的,因为大多数时候不需要自定义
 */
@HandlesTypes(WebApplicationInitializer.class)
public class SpringServletContainerInitializer implements ServletContainerInitializer
{
    @Override
    public void onStartup(Set<Class<?>> webAppInitializerClasses, ServletContext servletContext)
            throws ServletException
    {
        List<WebApplicationInitializer> initializers = new LinkedList<>();
        if (webAppInitializerClasses != null)
        {
            for (Class<?> waiClass : webAppInitializerClasses)
            {
                if (!waiClass.isInterface() && !Modifier.isAbstract(waiClass.getModifiers()) &&
                        WebApplicationInitializer.class.isAssignableFrom(waiClass))
                {
                    try
                    {
                        initializers.add((WebApplicationInitializer) waiClass.newInstance());
                    } catch (Throwable ex)
                    {
                        throw new ServletException("Failed to instantiate WebApplicationInitializer class", ex);
                    }
                }
            }
        }

        if (initializers.isEmpty())
        {
            servletContext.log("No Spring WebApplicationInitializer types detected on classpath");
            return;
        }

        servletContext.log(initializers.size() + " Spring WebApplicationInitializers detected on classpath");
        AnnotationAwareOrderComparator.sort(initializers);
        for (WebApplicationInitializer initializer : initializers)
        {
            initializer.onStartup(servletContext);
        }
    }

}

4.在resources配置文件夹下定义jdbc.properties来声明jdbc配置:

jdbcDriver=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://127.0.0.1:3306/blog?characterEncoding=UTF-8
jdbcUser=root
jdbcPassword=123456

5.在xyz.lsm1998.config包内建立AppRootConfig类:

package xyz.lsm1998.config;

import javax.sql.DataSource;

import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

import com.alibaba.druid.pool.DruidDataSource;

/**
 * 这个配置类用于取代applicationContext.xml配置文件
 */
@Configuration
@PropertySource("classpath:jdbc.properties")
public class AppRootConfig
{
    public AppRootConfig()
    {
        System.out.println("AppRootConfig配置文件开始加载");
    }

    // 阿里巴巴数据源
    @Bean
    public DruidDataSource getDataSource(
            @Value("${jdbcDriver}") String driver,
            @Value("${jdbcUrl}") String url,
            @Value("${jdbcUser}") String username,
            @Value("${jdbcPassword}") String password)
    {
        DruidDataSource ds = new DruidDataSource();
        ds.setDriverClassName(driver);
        ds.setUrl(url);
        ds.setUsername(username);
        ds.setPassword(password);
        return ds;
    }

    // 根据数据源产生SessionFactory
    @Bean("sqlSessionFactory")
    public SqlSessionFactoryBean getFactory(@Autowired DataSource ds)
    {
        SqlSessionFactoryBean factory = new SqlSessionFactoryBean();
        factory.setDataSource(ds);
        return factory;
    }

    // 扫描mapper接口
    @Bean
    public MapperScannerConfigurer getScanner()
    {
        MapperScannerConfigurer scanner = new MapperScannerConfigurer();
        scanner.setBasePackage("xyz.lsm1998.mapper");
        scanner.setSqlSessionFactoryBeanName("sqlSessionFactory");
        return scanner;
    }
}

6.在xyz.lsm1998.config包内建立MyConfig类:

package xyz.lsm1998.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 由于配置类继承WebMvcConfigurerAdapter类已经过时,
 * 所以采用自定义配置类实现WebMvcConfigurer接口
 */
@Configuration
public class MyConfig implements WebMvcConfigurer
{
}

7.在xyz.lsm1998.config包内建立AppServletConfig类:

package xyz.lsm1998.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;

/**
 * 这个配置类用于取代spring-mvc.xml配置文件
 */
@Configuration
@ComponentScan("xyz.lsm1998")
@EnableWebMvc
public class AppServletConfig extends MyConfig
{
    // 加载一个视图解析器
    @Override
    public void configureViewResolvers(ViewResolverRegistry registry)
    {
        registry.jsp("/WEB-INF/jsp/", ".jsp");
    }
}

8.在xyz.lsm1998.config包内建立AppWebInitializer类:

package xyz.lsm1998.config;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

/**
 * 这个配置类用于取代web.xml配置文件
 */
public class AppWebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer
{
    @Override
    protected Class<?>[] getRootConfigClasses()
    {
        return new Class[]{AppRootConfig.class};
    }

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

    // 前端控制器拦截.do后缀的请求
    @Override
    protected String[] getServletMappings()
    {
        return new String[]{"*.do"};
    }
}

至此,基于Gredle的纯注解方式搭建SSM框架环境已经大功告成,其他的controller、domain、service等包读者自行创建。

猜你喜欢

转载自blog.csdn.net/qq_38258310/article/details/82558080