将子包装移至新包装后,@ Autowire无法正常工作

时间:2017-06-01 20:15:51

标签: java spring hibernate

我的Spring应用程序中有两个基本包 - com.company.myappmonitorcom.company.myappcommon

com.company.myappmonitor内,我有子包com.company.myappmonitor.daocom.company.myappmonitor.repository

我使用了Intellij Refactor>移至com.company.myappmonitor.daocom.company.myappmonitor.repository移至com.company.myappcommon - 因此它们现在位于com.company.myappcommon.daocom.company.myappcommon.repository。我能够成功构建Spring应用程序。

将这些子包移至com.company.myappcommon后 - 我收到的错误是我的@Autowired注释之一不再有效。错误是

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

Description:

Field myVersionsRepository in com.company.myappmonitor.service.myVersionsServiceImpl required a bean of type 'com.company.myappcommon.repository.myVersionsRepository' that could not be found.


Action:

Consider defining a bean of type 'com.company.myappcommon.repository.myVersionsRepository' in your configuration.

@Autowired在我移动dao和存储库子包之前正在工作。

我使用Spring java配置和注释在Spring上下文中设置我的服务。我的myVersionsRepository看起来像

package com.company.myappcommon.repository;

import ...

@Transactional
@Repository
public interface myVersionsRepository extends CrudRepository<myVersions, String>, myVersionsRepositoryCustom {

我的myVersionsServiceImpl看起来像

package com.company.myappmonitor.service;

import ...

@Service(value = "myVersionsServiceImpl")
public class myVersionsServiceImpl implements myVersionsService {

    @Autowired
    myVersionsRepository myVersionsRepository;

我的配置类看起来像

package com.company.myappmonitor.config;

import ...

@Configuration
@PropertySource("classpath:application.properties")
@ComponentScan("com.company")
public class AppConfig {

我认为我的@ComponentScan basePackages存在问题。我试过了

@ComponentScan("com.company")
@ComponentScan("com.company.myappmonitor", "com.company.myappcommon")
and
@ComponentScan(basePackages = {"com.company.myappmonitor", "com.company.myappcommon"})

这些都没有奏效。我有什么想法可以收到此错误?谢谢!

3 个答案:

答案 0 :(得分:1)

尝试将“com.company.myappcommon。*”添加到void *foo(void *i) { int a = *((int *) i); free(i); } int main { int *arg = (char*)malloc(sizeof(char)) pthread_create(&thread, 0, foo, arg); } basePackages。如:

compontScan

答案 1 :(得分:0)

我能够让我的应用程序构建,@Autowired工作。

问题是由于某种原因未扫描@Repository组件

http://forum.spring.io/forum/spring-projects/container/95749-repository-component-is-not-scanned-please-help

我实际上并没有那么多地使用我的存储库类,我只是完全删除了com.company.myappcommon.repository子包并且应用程序构建得很好。

答案 2 :(得分:0)

我也遇到了同样的问题。我添加了下面的代码,并且可以正常工作。

@SpringBootApplication(scanPackages = "your package")

检查官方网站以供参考。

https://www.java2novice.com/issues/spring-boot-not-scanning-components/