Spring Boot项目调用User类setCity方法提示未定义问题咨询
问题原因
你在Spring Boot主类中导入的User类是Spring Security自带的org.springframework.boot.autoconfigure.security.SecurityProperties.User,该类仅提供了Spring Security内置用户的基础属性方法,没有你自定义的setCity方法。你自己编写的带setCity方法的User实体类在com.example.spring.jpadata.entities包下,导错类是报错的核心原因。
解决方案
方案一(推荐,无类名冲突场景)
直接替换错误的导入语句即可:
- 删除主类顶部的错误导入:
import org.springframework.boot.autoconfigure.security.SecurityProperties.User;
- 新增你自己的实体类导入:
import com.example.spring.jpadata.entities.User;
修改后的完整主类参考:
package com.example.spring.jpadata; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ApplicationContext; import com.example.spring.jpadata.dao.UserRepository; import com.example.spring.jpadata.entities.User; @SpringBootApplication public class JpaApplication { public static void main(String[] args) { ApplicationContext context = SpringApplication.run(JpaApplication.class, args); UserRepository userRepository = context.getBean(UserRepository.class); User user = new User(); user.setName("XYZ"); user.setCity("Delhi"); } }
方案二(两个User类都需要使用的场景)
如果你的业务同时需要用到Spring Security的User类和你自定义的实体类,直接写全类名区分即可,不需要改导入语句,创建自定义User实例时的代码改成:
com.example.spring.jpadata.entities.User user = new com.example.spring.jpadata.entities.User();
完成修改后重新编译项目即可解决报错。
内容的提问来源于stack exchange,提问作者Apratim Dutta Choudhury
相关产品推荐
相关产品推荐

