栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

一篇文章学会ssm-配置文件整合-原来ssm也可以像springBoot 一样自动扫包(对ssm的误解)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

一篇文章学会ssm-配置文件整合-原来ssm也可以像springBoot 一样自动扫包(对ssm的误解)

前言

我们之前整合的ssm框架都是通过xml 配置bean,在接触并且使用了spingboot的自动配置,自动注入之后。感觉开阔了新天地,从这点也可以对比出,为什么说springboot 并不是为了替代 spring 而是在已有的基础上,优化了ssm的繁琐配置。可以做到零配置就可以启动一个项目,本篇文章常识让xml配置bean 改成 想springboot 一样自动扫包。

目录
  • 业务
  • 代码示例
    • Java代码
      • controller
      • service
      • pojo
      • dao
    • JSP
  • pom 依赖
  • xml文件整合
  • applictionContext 总配置文件
    • dao
    • controller
    • service
  • 整合注意事项
    • pom xml过滤设置
    • 容器注入失败
  • 效果
  • 源码分享

业务

通过jsp页面插入一条用户信息,业务随机简单。醉翁之意不在此!
分层

代码示例 Java代码 controller
 package com.kuang.controller;

import com.kuang.pojo.UserInfoPojo;
import com.kuang.service.UserInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.annotation.Resource;


@Controller
@RequestMapping("/userInfo")
public class UserInfoController {
    @Autowired
    private UserInfoService userInfoService;

    @PostMapping("/addUserInfo")
    public Object addUserInfo( UserInfoPojo userInfoPojo){
        int i = userInfoService.addUserInfo(userInfoPojo);

        return "addUserInfo";
    }
    // 跳转到增加书籍页面
    @RequestMapping("/toAddUserInfo")
    public String pageJumps(){
        return "addUserInfo";
    }

}

service

接口

 package com.kuang.service;

import com.kuang.pojo.UserInfoPojo;


public interface UserInfoService {
    
    int addUserInfo(UserInfoPojo userInfoPojo);
}

实现类

 package com.kuang.service;

import com.kuang.dao.UserInfoMapper;
import com.kuang.pojo.UserInfoPojo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;


@Service
public class UserInfoImpl  implements UserInfoService{
    @Autowired
    private UserInfoMapper userInfoMapper;

    //使用xml配bean 需要解开此注释
//    public void setUserInfoMapper(UserInfoMapper userInfoMapper) {
//        this.userInfoMapper = userInfoMapper;
//    }

    @Override
    public int addUserInfo(UserInfoPojo userInfoPojo) {
        return userInfoMapper.addUserInfo(userInfoPojo);
    }
}

pojo
 package com.kuang.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;


@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserInfoPojo {
    private String userName;
    private String userPwd;
    private int age;
    private String sex;
}

dao
 package com.kuang.dao;

import com.kuang.pojo.UserInfoPojo;


public interface UserInfoMapper {

    int addUserInfo(UserInfoPojo userInfoPojo);
}

xml dao实现

 




    
        insert  into user_info values (#{userName},#{userPwd},#{age},#{sex})
    

JSP
 <%--
  Created by IntelliJ IDEA.
  User: 康世行
  Date: 2022/4/20
  Time: 16:01
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    添加用户信息
    <%-- 引入bootstarp--%>
    


pom 依赖
   
        
            junit
            junit
            4.13
        
        
        
            mysql
            mysql-connector-java
            8.0.17
        
        
        
            com.mchange
            c3p0
            0.9.5.2
        
        
        
            javax.servlet
            servlet-api
            2.5
        
        
            javax.servlet.jsp
            jsp-api
            2.2
        
        
            javax.servlet
            jstl
            1.2
        
        
        
            org.mybatis
            mybatis
            3.5.2
        
        
            org.mybatis
            mybatis-spring
            1.3.2
        
        
        
            org.springframework
            spring-webmvc
            5.3.6
        
        
            org.springframework
            spring-jdbc
            5.3.6
        
        
            org.projectlombok
            lombok
            1.18.12
        
xml文件整合 applictionContext 总配置文件
 


    
    
    


dao

database.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true 
jdbc.username=root
jdbc.password=123456

mybatis-config

 


    
        
    
  
  
     

  


spring-dao

 



    


    
    
        
        
        
        

        
        
        
        
        
        
        
        
        

    

    
        
        
        
        
    

    
        
        
    
        
    


controller

spring-mvc

 

    
    
    
    
    
    
    
        
        
        
    
    
    


service

spring-service

 

    
    
    




    
    
    
        
    


整合注意事项 pom xml过滤设置
  
    
        
            
                src/main/java
                
                    ***.xml
                
                false
            
            
                src/main/resources
                
                    ***.xml
                
                false
            
        
    
容器注入失败


     当出现上面这个错误的时候,说明你要依赖的对象,没有被注入到容器中。可以理解为没有在IOC容器中找到要依赖的对象。

这个时候不要慌,请看蓝色字部分,安住Ctrl(仅限windows 用户,苹果用户自行搜索快捷键) 点击进去就可以找到错误的原因了如下:

可以看到使用autowired 自动注入bean 的userInfoService 字段上 报红线,在idea 里报红线一般是err和warning。在结合上面的报错提示可以看到,我们要依赖的 userInfoService 对象创建失败,没有注入到IOC容器就导致了controller 对象依赖它的时候报错。
解决方案
      由于service 层使用的是自动扫包所以,在接口的实现类上需要加上 @Service 这个注解才可以把对应的实现类注入到IOC容器
不加注解

加注解

从图中可以看出来~ 只是类上多了个Service 注解,通过service 注解就可以把实现类对象注入到容器中。

效果

首页

添加用户信息

添加成功!

源码分享

项目源码分享

**感谢阅读~ 都已经看到这了,不妨给个一键三连
**

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/851127.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号