我试图在主应用程序中调用客户Bean来测试我的Bean设置正确(我可以看到它们正在创建),并且出现以下错误:
线程“主”中的异常java.lang.ClassCastException:类 com.r00107892.bank.domain.Customer无法转换为类 com.r00107892.bank.services.CustomerService (com.r00107892.bank.domain.Customer和 com.r00107892.bank.services.CustomerService位于的未命名模块中 com.r00107892.bank.MainApp.main(MainApp.java:24)中的加载程序“ app”)
我已经检查了Customer.java,CustomerDAO.java,CustomerDAOImpl.java,CustomerService.java,CustomerServiceImpl.java,mainApp和Beanconfig.java,但找不到问题。
我更改了Beanconfig,使其不再将Customer明确命名为Bean,而是使用ComponentScan。
MainApp
sql = "SELECT * FROM ArtistDetails"
mycursor.execute(sql)
myresult = mycursor.fetchall()
for x in myresult:
print(f"<option>{x[1]}</option>")
print("""
</select>
<br>
""")
Customer.java
@Configuration
public class MainApp {
public static void main(String[] args) {
AnnotationconfigApplicationContext context= new
AnnotationconfigApplicationContext (Beanconfig.class);
System.out.println("Bean names: " + Arrays.toString(context.getBeanNamesForType(Beanconfig.class)));
CustomerService customerService = (CustomerService) context.getBean("customer");
System.out.println(customerService.getcustomerByaccountNumber('1'));
context.close();
}
}
CustomerService
@Component
public class Customer{
public String name;
public int account;
public Customer() {
}
public Customer(int account,String name){
}
public String getName() {
return name;
}
public void setName(String name) {
this.name=name;
}
public int getaccount() {
return account;
}
public void setaccount(int account) {
this.account = account;
}
public void myDetails() {
System.out.println("My name is "+ this.name);
System.out.println("My name is" + this.account);
}
public String toString(String name,int account) {
String sentence = name + " " + account;
return sentence;
}
CustomerServiceImpl
@Service
public interface CustomerService {
Customer getcustomerByaccountNumber(int accountNumber);
}
我希望看到第1号帐户(已经在数据库中)的客户名称被打印出来。