当我试图在Spring MVC项目中使用@autowire,@配置,@bean,@Repository时,我得到了这个错误
无法自动关联字段:专用com。萨钦。刀。斯托克道尔公司。萨钦。我的应用程序。家庭控制器。斯托克道;
嵌套的异常是org。springframework。豆。工厂NoSuchBeanDefinitionException:找不到依赖项类型为[com.sachin.dao.StockDaoImpl]的匹配bean:
请让我知道我犯了什么错误。我是SpringMVC和依赖注入的新手。
这是我的控制器代码。我正在尝试将StockDaoImpl注入控制器。
@Controller
public class HomeController {
@Autowired
private StockDaoImpl stockDao;
@RequestMapping(value = "/stockgoogle/", method = RequestMethod.GET)
public @ResponseBody Stock stockGoogle(Locale locale, Model model) {
//StockDaoImpl stockDao = new StockDaoImpl();
Stock s=stockDao.listGoogle();
model.addAttribute("s", s );
return s;
}
}
下面是我的服务实现。我在这里使用了@Repository注释和“stockDao”,这是我想要注入的控制器中的变量名
@Repository("stockDao")
public class StockDaoImpl implements StockDao {
@Override
public Stock listGoogle() {
Stock s = null;
try {
... //some code
String name = rs.getString("Name");
s = new Stock(name);
...
} catch (Exception e) {
}
return s;
}
}
另外,我还单独创建了一个配置类。我用这个来定义我的bean。我只是用它来指定bean,并没有在代码中的任何地方导入它。
@Configuration
public class BeanConfiguration {
@Bean
public StockDaoImpl stockDao(){
return new StockDaoImpl();
}
}
我是不是遗漏了什么。从错误的角度看,@Bean注释似乎对工厂不可见。除了注释@configuration类之外,我还需要做其他事情吗。
我也可能以错误的方式使用注释。我可能在使用@Autowired或@Repository时犯了一个错误。
你能帮忙吗。
我正在一个测试班上学习所描述的行为。
我在IntelliJ 2020.1工作,有一个旧项目基于:
Java 1.6
Spring 3.0.5.RELEASE
Maven POM 4.0.0
Maven 3.2.5
测试类开始于:
@Test
@ContextConfiguration(locations={ "classpath*:beans_sets/UhradyForIns.xml"})
@TransactionConfiguration(transactionManager="transactionManager", defaultRollback=false)
@DirtiesContext(classMode= DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
public class OdeslatJakobyAutomatickyUhraduTest extends TestBaseWithProperties {
private static final Logger log = LoggerFactory.getLogger(OdeslatJakobyAutomatickyUhraduTest.class);
@Autowired
U01UhradaBaseJpaDaoForTesting dao;
有时,在POM中进行一些更改之后,Spring突然无法自动连接dao,从而准确地给出您的消息。dao通过其类和XML上下文描述得到了很好的描述,但突然之间,Spring看不到dao。我已经尝试了许多这样描述的方法,添加注释,更改配置,但我发现,这一切都是多余的。我只需按4种不同的顺序刷新maven存储库4次:
1. mvn -e -U clean install //In cmd line
2. Ctrl+Shift+A Reimport maven //in IntelliJ
3. double round arrows for refresh //in the maven window of IntelliJ
4. AGAIN REPEAT THE FIRST REFRESH.
在那之后,一切都很好,直到POM的下一个更大的变化。
或直到由于一些内在原因,Maven或IntelliJ在没有您参与的情况下损坏了本地jar存储库。至少,我有一个案例,当我没有接触到存储库时,无法自动连线
消息出现。但这次只有一个
mvn -e -U clean install
足够了。
显然,IntelliJ中的maven和/或maven插件中存在一些错误。该问题由
无法自动连线显示
消息。修复可以通过简单的maven存储库刷新实现,或者在更糟糕的情况下,需要一系列不同的存储库刷新。
我知道它在解决方案中没有明显的逻辑,我们的开发人员的工作越来越像魔术。这一次,肯定不是你或我的错。我们必须适应现有的错误。至少我们知道怎么做。
我想这可能是你的问题:
“我还单独创建了一个配置类。我用它来定义我的bean。我只是用它来指定bean,没有在代码中的任何地方导入它。”
在某个地方,您需要告诉Spring查找BeanConfiguration
。您可以在应用程序上下文中执行此操作。xml
文件(假设您有一个)如下所示:
<context:component-scan base-package="com.sachin.config" />
这假设BeanConfiguration位于com.sachin.config
包中。
如果你找不到放在哪里,分享你的网站可能会有帮助。xml文件。
当我试图在SpringMVC中使用依赖注入时,我遇到了这个错误。 没有匹配的类型[com.sachin.dao.斯托克道]的bean找到依赖项:预计至少有1 bean有资格作为该依赖项的自动连接候选。依赖注释:{};嵌套异常是org.springframework.beans.factory.NoSuchBean定义异常:没有找到类型[com.sachin.dao.Stock道]的匹配bean的依
问题内容: 经过几天的尝试并在springsource论坛上等待答案,我将在这里尝试。运行我的应用程序会导致以下异常: 这是相关的代码 应用程序上下文: com.example.my.entities.user: 服务: 问题答案: 可能有多种原因导致这种情况,我没有费心检查你的整个存储库,因此在这里我不知所措。 首先,如果你使用注释进行配置,则可能会从实现中丢失注释(@Service或@Comp
我通过使用Spring和Hibernate创建实体、服务和服务的JUnit测试开始了我的项目。所有这些都很管用。然后,我添加了spring-mvc来使用许多不同的分步教程来制作这个web应用程序,但是当我试图使用注释制作Controller时,我在部署期间从Glassfish得到错误。我想由于某种原因Spring没有看到我的服务,但经过多次尝试,我仍然无法处理它。 /webapp/web-inf/
我正在运行一个JUnit测试,嗯,我的Spring启动项目,我是这样写的: 找到依赖项[com.br.suppcomm.ocp.dao.logindao]得[com.br.suppcomm.ocp.dao.logindao]:需要至少1个具有此依赖项自动候选资格得bean.依赖项注释:{@org.SpringFramework.Beans.Factory.Annotation.AutoWired(
上面的解决方案和对这个pom的简单依赖没有作用域(我看到后者被称为“依赖项分组”)有什么区别?唯一的区别是这样的“分组”依赖项具有较低的优先级,而解决依赖项的优先级?
这是我的设想。我的项目正在使用Spring(3.2.3.Release)、Struts2(2.3.14.3)和JPA(2.0)。我们有一个包含各种实体和公共类的项目(我们称之为项目a)。我们使用项目A生成一个.jar文件,以便其他项目可以使用这些类。在项目A中,我们使用了Spring原型:@Component。@service或@repository用于我们希望Spring注入的那些类。每当我们尝