java - spring不从maven依赖中读取服务存储库

标签 java spring maven

我正在使用两个 Maven 项目,即一个是 Web 应用程序,另一个是 Maven jar。 jar的依赖被添加到web应用程序中,但是在web应用程序中访问jar期间

这是网络应用程序的代码

@Controller
public class IndexController {
    @Autowired
        private ServiceIntf intf;

        @RequestMapping("/")
        public String displayMessage(Model model) {
            String message = intf.message();
            System.out.println("\n\n\n\n" + message + "\n\n\n");
            model.addAttribute("message", message != null ? message : "null Value");
            return "index";
        }
    }

和服务存储库,来自其他项目

@Service
public class ServiceClass implements ServiceIntf {

    Logger logger = Logger.getGlobal();

    public String message() {
        return "hello";
    }

} 

jsp文件

<body>
    <h1>Configured Context</h1>
    ABC
    <h1>${message}</h1>
    DEF
</body>

网络应用程序的 pom 文件

    <dependencies>
            <dependency>
<!-- project dependency-->
                <groupId>test-core</groupId>
                <artifactId>test-core</artifactId>
                <version>0.0.1-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jstl</artifactId>
                <version>1.2</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet.jsp</groupId>
                <artifactId>jsp-api</artifactId>
                <version>2.1</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>4.1.0.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>4.1.0.RELEASE</version>
            </dependency>
        </dependencies>

结果,我打印了配置的上下文ABC XYZ,但没有打印消息。请看一下并帮助我。如果需要更多信息,请告诉我。

编辑:这是我从 eclipse 错误日志中获取的错误日志

The POM for test-core:test-core:jar:0.0.1-SNAPSHOT is missing, no dependency information available

编辑2:重新安装.m2后,我收到以下错误

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'indexController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.api.service.intf; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.api.service.ServiceIntf] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

网页配置文件

public class DispatcherServletConfiguration extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return null;
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[] { ServletConfig.class };
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }

}

@EnableWebMvc
@Configuration
@ComponentScan("com.api")
public class ServletConfig extends WebMvcConfigurerAdapter {

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }

    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setViewClass(JstlView.class);
        resolver.setPrefix("/WEB-INF/jsp/");
        resolver.setSuffix(".jsp");
        return resolver;
    }
}

注意:请原谅我的英语不好

最佳答案

BeanCreationException 的根本原因是名称为 intf 的 bean不存在,因此请进行以下任一更改。确保您有<context:component-scan base-package="your.base.package" />添加到 spring xml 文件中。

修复1:

改变

@Service
public class ServiceClass implements ServiceIntf {

@Service("intf")
public class ServiceClass implements ServiceIntf {

或者

修复2

改变

@Autowired
private ServiceIntf intf;

@Autowired
private ServiceIntf serviceIntf; 

关于java - spring不从maven依赖中读取服务存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45033172/

相关文章:

java - 实现快速排序似乎比归并排序花费更多时间

url 连接中的 java.lang.nullpointerException

java - 请求 header 在 spring mvc 中变得为空

java - Hibernate 延迟初始化 - 延迟初始化集合失败

java - 寻找日期格式的最佳正则表达式模式

java - android xml解析中的hashmap

java - log4j RollingFileAppender 创建文件但将其保留为空

java - 发送电子邮件功能出错

java - Maven 构建错误 - 未经授权

java - 使用 Maven 和/或 Gradle 处理 Java 项目中的依赖项