我正在使用两个 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/