ich folgende Fehlermeldung, wenn ich Zugang in Hauptseite versucheFehler beim Erstellen der Bohne mit dem Namen ‚Userservice‘: Unbefriedigend Abhängigkeit durch Feld ausgedrückt ‚userJpaRepository‘
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userService': Unsatisfied dependency expressed through field 'userJpaRepository'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'net.codejava.spring.repository.UserRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true), @org.springframework.beans.factory.annotation.Qualifier(value=userJpaRepository)}
In meinem Usercontroller Ich habe den Code folgenden
@Controller
public class UserController {
private UserService employeeServiceImpl;
@RequestMapping("/")
public String employee() {
this.employeeServiceImpl.listAlUsers();
return "employee";
}
@Autowired(required = true)
public void setEmployeeService(UserService employeeServiceImpl) {
this.employeeServiceImpl = employeeServiceImpl;
}
}
Mein Userservice
public interface UserService {
public abstract List<User> listAlUsers();
public abstract User addUser(User user);
public abstract int removeUser(int id);
public abstract User updateUser(User user);
}
Mein UserServiceImpl
@Service("userService")
public class UserServiceImpl implements UserService {
@Autowired
@Qualifier("userJpaRepository")
private UserRepository userJpaRepository;
@Override
public List<User> listAlUsers() {
return userJpaRepository.findAll();
}
@Override
public User addUser(User user) {
return userJpaRepository.save(user);
}
@Override
public int removeUser(int id) {
userJpaRepository.delete(id);
return 0;
}
@Override
public User updateUser(User user) {
return userJpaRepository.save(user);
}
}
Mein JpaRepository
@Repository("userJpaRepository")
public interface UserRepository extends JpaRepository<User,Serializable> {
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>
<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Processes application requests -->
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
Mein Servlet-Kontext
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<!--The <context:component-scan...> tag will be use to activate Spring MVC annotation scanning capability which allows to make use of annotations like @Controller and @RequestMapping etc.-->
<!--Step 1 : HandlerMapping -->
<context:component-scan base-package="com.loiane.controller" />
<!--JPA Repository-->
<jpa:repositories base-package="com.loiane.repository.EmployeeJpaRepository"/>
<mvc:annotation-driven />
<!--Step 3 : View Resolver-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/WEB-INF/views/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
<!--Bundles-->
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename">
<value>messages</value>
</property>
</bean>
<!--Declaramos el interceptor para permitir el cambio de idioa en tiempo de ejecucion-->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**" />
<bean id="localeChangeInterceptor"
class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="lang" />
</bean>
</mvc:interceptor>
</mvc:interceptors>
<!--Si el idioma no existe cargamos el en-->
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
<property name="cookieName" value="lang" />
<property name="defaultLocale" value="en" />
</bean>
</beans>
Die Wurzel-Kontext ist leer.
Ich weiß nicht, wo ist die mögliche Fehlerursache Ich versuche, differents Optionen zu finden, aber wenn ich das DAO-Muster verwende, erhalte ich den gleichen Fehler, also würde ich wissen, welches Problem zu versuchen ist, es zu lösen .
Die Konfiguration des Projekts ist mit XML, aber ich denke, es ist nicht wichtig, diese Situation zu lösen.
Grüße!
XML ist sehr wichtig, dies zu lösen, wie das Problem, weil zu scannen Das Repository wird nicht autowired, also poste es bitte. Sie verwenden überall Anmerkungen, die nicht sicher sind, warum Sie XML-Konfiguration verwenden wollten. – lsiva
Korrekt, verwende ich Annotation, um diese zu verwenden, denke ich, dass Bean nicht in xml deklariert wird, aus diesem Grund habe ich das Problem, ich muss schlafen ... hahaa – jc1992
warum haben Sie ' 'Wenn Sie' component-scan' in der Datei servlet-context.xml verwenden, befinden sich diese Dienste und das Repository in demselben Projekt oder in einem anderen Projekt –