java service注入失败,项目的controller service注入失败

部分报错如下:

四月 23, 2018 9:47:35 下午 org.springframework.web.context.ContextLoader initWebApplicationContext

严重: Context initialization failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.mmall.service.IUserService com.mmall.controller.portal.UserController.iUserService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'iUserService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.mmall.dao.UserMapper com.mmall.service.impl.UserServiceImpl.userMapper; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userMapper' defined in file [C:\Software\tomcat\apache-tomcat-7.0.75\webapps\ROOT\WEB-INF\classes\com\mmall\dao\UserMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory': : Error creating bean with name 'sqlSessionFactory' defined in class path resource [applicationContext-datasource.xml]: Invocation of init method failed; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [C:\Software\tomcat\apache-tomcat-7.0.75\webapps\ROOT\WEB-INF\classes\mappers\UserMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'BaseResultMap'.  Cause: java.lang.ClassNotFoundException: Cannot find class: BaseResultMap; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [applicationContext-datasource.xml]: Invocation of init method failed; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [C:\Software\tomcat\apache-tomcat-7.0.75\webapps\ROOT\WEB-INF\classes\mappers\UserMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'BaseResultMap'.  Cause: java.lang.ClassNotFoundException: Cannot find class: BaseResultMap

spring的配置文件是拉的老师的配置文件 ,controller和service里也加了@controller和@service注解,但是扫描失败

以前也遇到过这个问题,原因是jkd1.8和spring3不兼容 会报这个扫描不到的情况

但是这个是jdk1.7和spring4,和老师的一样,不知道为什么会报这个做,我的环境也和老师一样,只是操作系统是window10

里面讲的我没明白,希望老师能给我个解决问题的方向和思路

### 回答1: Controller注入Service接口是指在Controller通过依赖注入的方式将Service接口注入进来,以便在Controller调用Service接口的方法来完成业务逻辑。这样做的好处是可以将ControllerService层解耦,使得代码更加清晰、易于维护。同时,通过注入接口而不是具体实现类,也可以方便地进行单元测试和模拟测试。 ### 回答2: Controller注入Service接口是指在控制器类使用@Autowired或@Resource等注解将Service接口的实现类注入到控制器。通过这种方式,控制器就可以直接调用Service接口的方法,实现对业务逻辑的处理。 使用注入的方式可以提高代码的可维护性和扩展性。当需要改变Service接口的实现类时,只需要修改注入的注解即可,而不需要改动控制器内部的代码。这样,可以更加灵活地切换不同的实现类,方便进行单元测试和代码的优化。 另外,Controller注入Service接口还能够将业务逻辑和控制层解耦。控制器类只需关注业务的调用和返回结果的处理,而具体的业务逻辑则由Service接口的实现类负责。这样可以使代码结构更加清晰,降低模块间的依赖关系,提高代码的可读性和可维护性。 总之,Controller注入Service接口是一种良好的设计模式,可以将控制器和业务逻辑进行有效地分离,使代码更加清晰、灵活和易于扩展。 ### 回答3: 在Spring框架Controller注入Service接口是一种常见的依赖注入方式,用于实现ControllerService层之间的解耦和业务逻辑的复用。通常情况下,在Controller通过使用@Autowired注解来实现Service接口的注入。 通过Controller注入Service接口可以方便地调用Service层的业务方法,并将处理结果返回给前端。使用接口注入的好处是可以轻松切换不同的Service实现,实现了高度的灵活性。此外,通过接口注入,我们可以更好地进行单元测试,在测试过程可以方便地模拟Service层的行为,提高代码的质量。 在实际的开发,我们通常先定义一个Service接口,然后编写Service接口的实现类,最后在Controller通过注解的方式将Service注入Controller。这样在Controller就可以直接调用Service接口定义的方法。例如: ```java @Service public interface UserService { void save(User user); void deleteById(int id); List<User> findAll(); } @Service public class UserServiceImpl implements UserService { @Override public void save(User user) { // 实现逻辑 } @Override public void deleteById(int id) { // 实现逻辑 } @Override public List<User> findAll() { // 实现逻辑 } } @Controller public class UserController { @Autowired private UserService userService; @GetMapping("/users") public String getAllUsers(Model model) { List<User> users = userService.findAll(); model.addAttribute("users", users); return "users"; } // 其他Controller方法 } ``` 通过以上的代码示例,我们可以看到Controller通过@Autowired注解将UserService接口注入Controller,然后就可以调用UserService接口定义的方法了。这样实现了ControllerService层之间的解耦,并且便于代码的维护和测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值