SSM整合配置全使用注解-->代替spring-*.xml 、 mybatis-config.xml 以及 web.xml

SSM使用注解配置

现在市面上很流行注解配置项目,而SSM 目前使用注解配置的还很少,

今天弄了半天,终于成功配出来,下面分享一下

<完全抛弃 XML 的配置>

项目开源

下载地址1:csdn下载

下载地址2:CodeChina


目录

SSM使用注解配置

Step 1 创建 jdbc.properties

Step 2 创建 DataSourceConfig.java

代码

Step 3 MybatisConfig.java

代码

Step4 SpringMvcConfig.java

代码

Setp 5 AppConfig.java

Step 6 代替 Web.xml

代码


Step 1 创建 jdbc.properties

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///vuee?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=dcpnet
jdbc.initialSize=5

Step 2 创建 DataSourceConfig.java

该配置用于配置数据源,类似于 XML的配置

代码

在类上面注意导入 jdbc.properties

@PropertySource("classpath:jdbc.properties")
public class DataSourceConfig {

    /** mysql 驱动类名 */
    @Value("${jdbc.driverClassName}")
    private String jdbcDriverClassName;

    /** mysql 连接 url */
    @Value("${jdbc.url}")
    private String jdbcUrl;

    /** mysql 用户名 */
    @Value("${jdbc.username}")
    private String jdbcUserName;

    /** mysql 密码 */
    @Value("${jdbc.password}")
    private String jdbcPassword;


    /**
     * 获取数据源
     * @return 数据源 dataSource
     */
    @Bean("dataSource")
    public DataSource dataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(jdbcDriverClassName);
        dataSource.setUrl(jdbcUrl);
        dataSource.setUsername(jdbcUserName);
        dataSource.setPassword(jdbcPassword);
        return dataSource;
    }

    /**
     * 事务管理
     * @param dataSource 数据源
     * @return 数据源事务管理
     */
    @Bean("dataSourceTransactionManager")
    public DataSourceTransactionManager dataSourceTransactionManager(DataSource dataSource){
        return new DataSourceTransactionManager(dataSource);
    }
}

Step 3 MybatisConfig.java

这个类用于配置 SqlSessionFactory 、 Mybatis 的设置 

一般要对 Mybatis 进行配置,和以往的 mybatis-config.xml 中配置的内容一样,

进行别名配置,驼峰转换机制等

然后通过 SqlSessionFactory 进行注入配置

Mybatis-config.xml

spring-ioc.xml 部分

代码

我们将上面的两个部分都写在 MybatisConfig.java

public class MybatisConfig {

    /**
     * 配置Mybatis
     * @return
     */
    @Bean
    public Configuration configuration(){
        // 配置Mybatis
        Configuration configuration = new Configuration();
        // 驼峰命名
        configuration.setMapUnderscoreToCamelCase(true);
        // 日志输出
        configuration.setLogImpl(StdOutImpl.class);
        // 使用列标签替换列别名 默认:true
        configuration.setUseColumnLabel(true);
        return configuration;
    }

    /**
     * 获取 sqlSessionFactory
     * @param dataSource 数据源
     * @return sqlSessionFactory
     * @throws Exception 异常
     */
    @Bean("sqlSessionFactory")
    public SqlSessionFactory SqlSessionFactory(@Autowired DataSource dataSource,@Autowired Configuration configuration) throws Exception {
        /** 创建 SqlSessionFactoryBean */
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        // 设置数据源
        factoryBean.setDataSource(dataSource);
        // 扫描mapper配置
        factoryBean.setMapperLocations(
                new PathMatchingResourcePatternResolver().getResources("mapper/*.xml")
        );
        factoryBean.setConfiguration(configuration);
        return factoryBean.getObject();
    }


    /**
     * 使用mybatis的时候 用的动态代理 完全就只有接口
     * @return mapperScannerConfigurer
     */
    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer(){
        /** 创建扫面的配置类 */
        MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
        // 指定要扫描的包  这样spring才知道有哪些dao要动态代理
        mapperScannerConfigurer.setBasePackage("cn.dcpnet.dao");
        return mapperScannerConfigurer;
    }
}

Step4 SpringMvcConfig.java

这一个类主要是配置以往的 spring-mvc.xml 中的配置

 

ViewResolver 现在不使用,就不进行配置,并且JSP 是已经被淘汰了技术了

代码

使用 java 代码实现以上功能 SpringMvcConfig.java

注意,这个类要实现接口 WebMvcConfigure

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"cn.dcpnet.controller"})
public class SpringMvcConfig implements WebMvcConfigurer {

    /**
     * 文件上传配置
     * @return
     */
    @Bean("multipartResolver")
    public CommonsMultipartResolver commonsMultipartResolver(){
        CommonsMultipartResolver resolver = new CommonsMultipartResolver();
        // 配置上传大小
        resolver.setMaxUploadSize(1024*1024*80L);
        // 配置上传的编码
        resolver.setDefaultEncoding("utf-8");
        return resolver;
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
    }

    /**
     * 接触跨域访问限制
     * @param registry registry
     */
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOriginPatterns("*")
                .allowedMethods("*")
                .allowCredentials(true)
                .allowedHeaders("*")
                .maxAge(3600);
    }
}

Setp 5 AppConfig.java

整个 项目的核心配置

@Configuration
@EnableTransactionManagement
@Import({DataSourceConfig.class,MybatisConfig.class})
@ComponentScan(basePackages = {"cn.dcpnet.service","cn.dcpnet.dao"})
public class AppConfig {
}

 

Step 6 代替 Web.xml

以往我们都需要在 Web.xml 中去配置 编码过滤, DispatcherServlet 什么的,

当然,我写在这里就意味着能使用 java 代码去代替

前提是要实现接口 WebApplicationInitializer

继承了这个接口会重写 onStartup 方法,这个方法会在 tomcat 启动的时候自动启动,就像是去读取 web.xml 文件一般

WebApplication .java

代码

public class WebApplication implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        /** 加载父子容器 */
        AnnotationConfigWebApplicationContext applicationContext = new AnnotationConfigWebApplicationContext();
        // 加载配置文件
        applicationContext.register(AppConfig.class);
        applicationContext.register(SpringMvcConfig.class);

        // 编码过滤
        CharacterEncodingFilter characterEncoding = new CharacterEncodingFilter();
        characterEncoding.setEncoding("UTF-8");
        FilterRegistration.Dynamic encodingFilter = servletContext.addFilter("characterEncodingFilter",characterEncoding);
        encodingFilter.addMappingForUrlPatterns(null,true,"/*");

        ServletRegistration.Dynamic dispatcherServlet = servletContext.addServlet("dispatcherServlet",new DispatcherServlet(applicationContext));
        dispatcherServlet.addMapping("/");
        dispatcherServlet.setLoadOnStartup(1);
    }
}

 

运行

然后随便写一个 Controller 就能访问了!

我这里就不进行展示了,如果有问题得话,可以联系我!~

谢谢!

致每个坚持奋斗的码农,

 

 

 

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值