鱼C论坛

 找回密码
 立即注册
查看: 261|回复: 7

[已解决]建了一个mybatis工程 配置好文件 写好代码后运行 出现以下错误信息 要如何解决呢?

[复制链接]
发表于 2024-1-7 03:49:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我用spring boot stater 建了一个mybatis工程 配置好文件 写好代码后运行 出现以下错误信息 请问是什么意思 要如何解决呢?

***************************
APPLICATION FAILED TO START
***************************

Description:

Field userService in com.example.demo.controller.UserController required a bean of type 'com.example.demo.service.UserService' that could not be found.

The injection point has the following annotations:
        - @org.springframework.beans.factory.annotation.Autowired(required=true)


Action:

Consider defining a bean of type 'com.example.demo.service.UserService' in your configuration.


我用的工程结构和代码如下

/Stringboot_Test1-1/src/main/java/com/example/demo/controller/UserController.java 在这个类里 代码 如下


package com.example.demo.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.example.demo.service.UserService;
import com.example.demo.vo.User;

@RestController
@RequestMapping("user")
public class UserController {

        @Autowired
        UserService userService;
               
        @GetMapping("selectUsers")
        public List<User> selectUsersClo(){
                return userService.selectUsersSer();
                }
       
       

}

/Stringboot_Test1-1/src/main/java/com/example/demo/dao/mappers/UserMappers.xml
在这个xml文件里 我的代码如下

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  
  
<mapper namespace="com.example.test.dao.UserDao">
  <select id="selectUsers" resultType="User">
    select id,name from user
  </select>
</mapper>


/Stringboot_Test1-1/src/main/java/com/example/demo/dao/UserDao.java 在这个接口里 我的代码如下
package com.example.demo.service;

import java.util.List;

import org.springframework.stereotype.Service;

import com.example.demo.vo.User;


public interface UserService {
        List<User> selectUsersSer();

}

/Stringboot_Test1-1/src/main/java/com/example/demo/service/impl/UserServiceImpl.java 在这个类里我的代码如下

package com.example.demo.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import com.example.demo.dao.UserDao;
import com.example.demo.service.UserService;
import com.example.demo.vo.User;

public class UserServiceImpl implements UserService {
       
        @Autowired
        UserDao userDao;
       
        @Override
        public List<User> selectUsersSer(){
                return userDao.selectUsers();
        }
       

}


/Stringboot_Test1-1/src/main/java/com/example/demo/service/UserService.java 在这个接口里 我的代码如下

package com.example.demo.service;

import java.util.List;

import org.springframework.stereotype.Service;

import com.example.demo.vo.User;


public interface UserService {
        List<User> selectUsersSer();

}

/Stringboot_Test1-1/src/main/java/com/example/demo/vo/User.java 在这个类里 我的代码如下


package com.example.demo.vo;

public class User {
        private int id;
        private String name;
        public int getId() {
                return id;
        }
        public void setId(int id) {
                this.id = id;
        }
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
       
       

}


/Stringboot_Test1-1/src/main/java/com/example/demo/StringbootTest11Application.java 在这个类里 有如下代码

package com.example.demo;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.example.demo.dao")
public class StringbootTest11Application {

        public static void main(String[] args) {
                SpringApplication.run(StringbootTest11Application.class, args);
        }

}

/Stringboot_Test1-1/src/main/resources/application.properties  在这个properies文件里的配置信息如下

spring.application.name=springboot-demo

server.port=8081


server.tomcat.uri-encoding=utf-8

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mysql
spring.datasource.username=root
spring.datasource.password=root


mybatis.mapper-locations=classpath:com/example/demo/dao/mappers/UserMappers.xml
mybatis.type-aliases-package=com.example.test.vo

请问 问题出在哪里 要怎么解决




最佳答案
2024-1-7 03:49:49
从错误信息看,是UserController类中的userService属性注入失败了,找不到类型为UserService的bean。

出现这个问题的原因可能有几种情况:
1. UserService接口没有被正确实现为一个bean。
2. UserServiceImpl类没有被正确声明为一个bean。

解决方法如下:
1. 确保UserService接口被正确实现为一个bean。在UserServiceImpl类上加上@Service注解,表示将这个类声明为一个bean。

  1. @Service
  2. public class UserServiceImpl implements UserService {
  3.     // ...
  4. }
复制代码


2. 确保UserServiceImpl类被正确声明为一个bean。在StringbootTest11Application类上,添加@EnableAutoConfiguration和@ComponentScan注解。

  1. @SpringBootApplication
  2. @MapperScan("com.example.demo.dao")
  3. @EnableAutoConfiguration
  4. @ComponentScan(basePackages = "com.example.demo")
  5. public class StringbootTest11Application {
  6.     // ...
  7. }
复制代码


这样就可以解决userService属性找不到bean的问题。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-1-7 03:49:49 | 显示全部楼层    本楼为最佳答案   
从错误信息看,是UserController类中的userService属性注入失败了,找不到类型为UserService的bean。

出现这个问题的原因可能有几种情况:
1. UserService接口没有被正确实现为一个bean。
2. UserServiceImpl类没有被正确声明为一个bean。

解决方法如下:
1. 确保UserService接口被正确实现为一个bean。在UserServiceImpl类上加上@Service注解,表示将这个类声明为一个bean。

  1. @Service
  2. public class UserServiceImpl implements UserService {
  3.     // ...
  4. }
复制代码


2. 确保UserServiceImpl类被正确声明为一个bean。在StringbootTest11Application类上,添加@EnableAutoConfiguration和@ComponentScan注解。

  1. @SpringBootApplication
  2. @MapperScan("com.example.demo.dao")
  3. @EnableAutoConfiguration
  4. @ComponentScan(basePackages = "com.example.demo")
  5. public class StringbootTest11Application {
  6.     // ...
  7. }
复制代码


这样就可以解决userService属性找不到bean的问题。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-7 04:11:54 | 显示全部楼层
FishC 发表于 2024-1-7 03:49
从错误信息看,是UserController类中的userService属性注入失败了,找不到类型为UserService的bean。

出 ...

修改后出现如下错误信息

Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2m2024-01-07T04:07:00.847+08:00 ERROR 11676 --- [springboot-demo] [           main] o.s.boot.SpringApplication              :  Application run failed
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-7 04:12:13 | 显示全部楼层
mumei2018 发表于 2024-01-07 04:11
修改后出现如下错误信息

Error starting Applicati ...


根据您提供的错误信息来看,出现了启动应用程序失败的问题。这可能是由于一些其他的配置问题导致的。

为了获取更详细的错误信息,可以尝试以调试模式重新运行应用程序。在命令行中添加`--debug`参数,例如:`java -jar your-application.jar --debug`。这样可以显示更多的条件评估报告和错误堆栈跟踪,帮助您找到问题的根源。

另外,请确保您的数据库连接配置正确,并且数据库服务已经启动。还要检查是否存在其他依赖项或配置错误。如果仍然无法解决问题,请提供更多的错误信息或调试输出,以便我们可以更好地帮助您解决问题。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-8 04:07:22 | 显示全部楼层
FishC 发表于 2024-1-7 04:12
根据您提供的错误信息来看,出现了启动应用程序失败的问题。这可能是由于一些其他的配置问题导致的。
...

请问 我该用appliction.yml做配置文件 把application.properties文件注释掉后 我把appliction.yml文件里的端口更改了 但是用eclipse运行 更改的端口没有生效 请问是什么原因呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-8 04:07:41 | 显示全部楼层
mumei2018 发表于 2024-01-08 04:07
请问 我该用appliction.yml做配置文件 把application. ...


在使用Spring Boot时,我们可以使用application.properties或application.yml作为配置文件。默认情况下,Spring Boot会优先加载application.properties文件,如果同时存在application.properties和application.yml文件,则只会加载application.properties文件的配置。

您提到将application.properties文件注释掉后,更改了application.yml文件里的端口,但是在Eclipse中运行时更改的端口没有生效。这可能是因为Eclipse在构建和运行项目时使用了自己的配置,而不是直接读取您修改的application.yml文件。解决方法如下:

1. 确认您的Eclipse项目中是否有其他的配置文件,例如src/main/resources目录下的其他.properties文件或其他配置文件。
2. 检查您的Eclipse项目设置,确保它们与您的配置文件一致。可以尝试重新启动Eclipse或重新导入项目。
3. 如果以上方法都未能解决问题,可以尝试使用命令行来运行应用程序,确保在命令行中指定正确的配置文件路径和参数。

另外,请确保您的application.yml文件的格式正确,并且将端口修改配置放在正确的地方,例如:`server.port: 8081`。

如果问题仍然存在,请提供更多的细节和错误信息,以便我们可以更好地帮助您解决问题。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-8 04:20:06 | 显示全部楼层
FishC 发表于 2024-1-8 04:07
在使用Spring Boot时,我们可以使用application.properties或application.yml作为配置文件。默认情况下 ...

我把刚刚的yml文件删掉了 重新建了一个properties文件 在里面更改端口 然后运行 没有报错 但是端口还是之前默认的8080 而更改的端口依旧没有生效 请问我该怎么办
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-8 04:20:21 | 显示全部楼层
mumei2018 发表于 2024-01-08 04:20
我把刚刚的yml文件删掉了 重新建了一个properties文件 ...


如果您已经删除了yml文件,重新创建了properties文件,并在其中更改了端口配置,但是更改的端口没有生效,可能有以下几个原因导致:1. 您的properties文件没有被正确加载。请确保文件名为`application.properties`,并且位于src/main/resources目录下。2. 您更改的端口配置不正确。请确认您在properties文件中正确设置了`server.port=8081`,并且没有其他地方覆盖了这个配置。3. 项目可能正在使用其他配置源。有些情况下,Spring Boot项目会从其他地方读取配置,例如环境变量、命令行参数、系统属性等。请确保您的项目中没有其他配置源干扰了端口配置。可以尝试在启动类上添加`@PropertySource("classpath:application.properties")`注解,来强制指定使用该配置文件作为配置源。如果以上步骤都没有解决问题,可以尝试做以下操作:1. 清理并重新构建工程,然后再运行。有时候,更改配置文件后,需要重新构建工程才能生效。2. 尝试在命令行中运行项目,使用`java -jar your-application.jar`。这样可以确保命令行参数和配置文件被正确加载。如果命令行中的配置生效了,那么可以排除IDE的问题。3. 如果您使用的是Maven或Gradle来构建项目,可以尝试在构建命令中加入参数`-Dspring.config.location=classpath:application.properties`,来明确指定使用该配置文件。这样可以确保加载的是您指定的配置文件。如果问题依旧存在,请提供更多细节和错误信息,让我能更好地帮助您解决问题。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 22:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表