在我的spring项目中初始化上下文后:
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext();
之后,我尝试在调用“getBean()”之前刷新配置文件:
context.refresh(); // explicit refresh of the config file.
然后:
ICustomerDal customerDal
= context.getBean("database", ICustomerDal.class);
customerDal.add();
但最后我得到了“NoSuchBeanDefinitionException:没有名为“database”的Bean可用”错误。
IC客户日期类文件:
package com.springdemo;
public interface ICustomerDal {
void add();
}
我的SqlCustomerDal.类文件:
package com.springdemo;
import org.springframework.stereotype.Component;
@Component("database")
public class MySqlCustomerDal implements ICustomerDal {
String connectionString;
// Getter
public String getConnectionString() {
return connectionString;
}
// Setter
public void setConnectionString(String connectionString) {
this.connectionString = connectionString;
}
@Override
public void add() {
System.out.println("Connection String : " + this.connectionString);
System.out.println("Added to MySQL Database!"); // MySQL Codes.
}
}
IocConfig.类文件:
package com.springdemo;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan("com.springdemo")
public class IocConfig {
}
但是如果我像下面的代码块那样做,就不会有错误:
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext("com.springdemo"); // implicitly registering and refreshing config file.
ICustomerDal customerDal = context.getBean("database", ICustomerDal.class);
customerDal.add();
我只是不明白,如果我在第一个场景中得到“NoSuchBeanDefinitionException”,为什么我在ApplicationContext参数中传递包名后没有得到错误?
提前感谢您的宝贵意见。
1条答案
按热度按时间vfwfrxfs1#
对于可能在此处遇到相同问题的任何人:
其实我已经想办法了解并解决了这里的情况。
我意识到我需要在ApplicationContext中指定配置文件,或者通过注册手动指定。
我们还可以为另一个附加方法指定如下配置文件:
使用下面的代码可以帮助我获得另一个方法,而不是将参数传递到“AnnotationConfigApplicationContext”中: