Spring - @Autowired funktioniert nicht

y0dA

Top Contributor
Hallo!
Im Detail bin ich gerade dabei ein Projekt mit
-) Maven
-) JSF 2.0
-) Spring 3.0
-) Tomcat 6.0

aufzusetzen.

Maven und JSF 2.0 klappt mittlerweile jedoch schaffe ich es gerade nicht dass die Dependency Injection funktioniert mit Annotationen.

spring.config.xml (applicationContext.xml):
Java:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
         [url]http://www.springframework.org/schema/beans/spring-beans-3.0.xsd[/url]
         [url=http://www.springframework.org/schema/context]Index of /schema/context[/url]
         http://www.springframework.org/schema/context/spring-context-3.0.xsd">

	<!-- Scan classpath for Spring components starting at base-package. Automatically 
		inludes: - AutowiredAnnotationBeanPostProcessor - CommonAnnotationBeanPostProcessor -->
	<context:component-scan base-package="at.mpf.mybudget" />

	<context:annotation-config />
</beans>

CustomerService.java
Java:
@Service
public class CustomerService {

	public String test() {
		return "ruf mich an!";
	}
}

Customer (fundiert zu Testzwecken als Controller in der Hoffnung dass DI funktioniert = Fehlanzeige):
Java:
@ManagedBean
@SessionScoped
@Controller
public class Customer {
	private String firstName;
	private String lastName;

	private String test;
	
	@Autowired // ist null..
	private CustomerService customerService;
	
	public String getTest() {
		return this.customerService.test();
	}

	public void setCustomerService(CustomerService customerService) {
		this.customerService = customerService;
	}

	public CustomerService getCustomerService() {
		return customerService;
	}
}

pom.xml - Dependencies
Java:
	<properties>
		<myfaces.version>2.0.2</myfaces.version>
		<spring.version>3.0.4.RELEASE</spring.version>
	</properties>

	<!-- Project dependencies -->
	<dependencies>
		<dependency>
			<groupId>org.apache.myfaces.core</groupId>
			<artifactId>myfaces-api</artifactId>
			<version>${myfaces.version}</version>
			<scope>compile</scope>
		</dependency>

		<dependency>
			<groupId>org.apache.myfaces.core</groupId>
			<artifactId>myfaces-impl</artifactId>
			<version>${myfaces.version}</version>
			<scope>compile</scope>
		</dependency>

		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.0</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.14</version>
			<scope>compile</scope>
		</dependency>

		<dependency>
			<groupId>commons-logging</groupId>
			<artifactId>commons-logging</artifactId>
			<version>1.1.1</version>
		</dependency>

		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.5</version>
			<scope>provided</scope>
		</dependency>

		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-validator</artifactId>
			<version>4.0.2.GA</version>
		</dependency>

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>1.4.2</version>
		</dependency>

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.4.2</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>${spring.version}</version>
		</dependency>

	</dependencies>
 

kidsos

Aktives Mitglied
Hi,

zu Testzwecken würde ich einen JUnit-Test machen. Damit bist du unabhängig von der Präsentationstechnologie (in deinem Fall JSF), so z.B.:

Java:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:service.spring.xml" })
@Transactional
public class CategoryServiceTest {

	@Autowired
	private CategoryDao categoryDao;
	private Category category;

	@Before
	public void setUp() {
		category = new Category();
		category.setName("Buher");
	}

	@Test
	public void testInsert() {
		category = categoryDao.save(category);
		assertEquals(category, categoryDao.readByPrimaryKey(category.getId()));
	}
}

Für eine Schichtentrennung ist es auch sinnvoll gegen Interfaces zu programmieren (ist ja auch Sinn von DI)

Ich bin im übrigen an der gleichen Sache dran wie du, d.h. Webprojekt mit Maven, JSF, JPA und Spring. Vielleicht kann man hier voneinander profitieren. Für DAO-Sachen verwende ich übrigens Hades. Erspart einem jede Menge Schreibarbeit. :)
 

y0dA

Top Contributor
Danke für deine Antwort.

Das man gegen Interfaces entwickelt ist mir durchaus bewusst..ich habe doch geschrieben dass oben gepostetes zu Testzwecken entstanden ist und nix mit dem eigentlichen Projekt zu tun hat ;)

Bezüglich dem JUnit Test, bei selbigen funktioniert die DI ebenfalls nicht (nehme an weil die spring-config.xml im WEB-INF Ordner liegt).
Wenn ich die spring-config.xml bspw. unter src/main/resource lege klappt die DI.
Brauchen die Tests nicht eigentlich immer eine eigene applicationConfig.xml oder kann ich auch auf die .xml im WEB-INF Ordner für die Tests benutzen?
 

kidsos

Aktives Mitglied
Wenn ich die spring-config.xml bspw. unter src/main/resource lege klappt die DI.
Dort sollte sie auch normal hin. Bei mir liegt sie ebenfalls dort.

Bezüglich dem JUnit Test, bei selbigen funktioniert die DI ebenfalls nicht (nehme an weil die spring-config.xml im WEB-INF Ordner liegt).
Für Tests kannst du ja den SpringJUnit4ClassRunner benutzen (konfiguriert den Container wahrscheinlich so, dass du DI auch in Tests verwenden kannst). Und mit @ContextConfiguration kannst du deine XML-Datei angeben
 

y0dA

Top Contributor
Dort sollte sie auch normal hin. Bei mir liegt sie ebenfalls dort.
Da bin ich mir nicht so sicher, es ist auch egal da die DI selbst dann nicht funktioniert (also wenn die spring-config in src/main/resource liegt).
Hierbei würde mich trotzdem interessieren wie du dann in der web.xml auf die Spring Config verwiesen hast?
Bei mir (da im WEB-INF):
Java:
	<!-- Spring configuration -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			/WEB-INF/spring-config.xml
		</param-value>
	</context-param>


Für Tests kannst du ja den SpringJUnit4ClassRunner benutzen (konfiguriert den Container wahrscheinlich so, dass du DI auch in Tests verwenden kannst). Und mit @ContextConfiguration kannst du deine XML-Datei angeben
Hmm?
Wie gesagt, den Test habe ich zum laufen bekommen.

Zum eigentlichen Problem gibts keine Idee, also warum es in der Webapplikation nicht funktioniert?
 
Zuletzt bearbeitet:

kidsos

Aktives Mitglied
Hm, im Moment programmiere ich noch den Service-Teil meines Projekts, d.h. wie dann das in meine Web Application kommt, damit hab ich mich noch gar nicht beschäftigt. Ich orientiere mich ein bissl an diesem Beispiel (das man auch runterladen kann). Dort wird Spring bspw. so konfiguriert:
[XML]<!-- Spring configuration-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/web.spring.xml
classpath:service.spring.xml
</param-value>
</context-param>[/XML]
D.h. einmal gibt es eine Spring Config für den Service- und dann noch eine für den Web-Teil (dort wird das Projekt in mehrere Module aufgeteilt, zur besseren Trennung).
 

y0dA

Top Contributor
Selbiges Tutorial habe ich auch schon durch :)

Naja vllt. kommt ja noch von anderer Stelle ein Hinweis.

Abgesehen davon, wie löst du die Sache mit Maven - hälst du dich an die Projektstruktur des Tutorials? Also das der Webcontent unter src/main/webapp zu finden ist? Machst du in der Console immer ein mvn eclipse:eclipse - dadurch bekomme ich nämlich "Referenced Libraries" welches für mich neu ist - kannte eigentlich immer nur die "Maven Dependencies" Lib. Vorteil an mvn eclipse:eclipse ist jedoch zweifellos dass unter Deployment Assembly die libs gesetzt werden, das kann m2clipse meines Wissens nicht.
 
Zuletzt bearbeitet:

y0dA

Top Contributor
Java:
@ManagedBean
@SessionScoped
public class Customer {
    private String firstName;
    private String lastName;
 
    private String test;
    
    @Autowired // ist null..
    private CustomerService customerService;
}
--> @ManagedBean
--> @Autowired
Kann es sein dass man die JSF Annotationen und die Spring Annotationen nicht mischen darf?
 
G

Gast2

Gast
Ich weiß nicht was die Annotation macht...
Aber um den Fehler einzuschränken kannst sie ja mal deklarieren ob es dann geht,
vielleicht wird auch der appilcation context gar nicht gelanden
 

kidsos

Aktives Mitglied
Abgesehen davon, wie löst du die Sache mit Maven - hälst du dich an die Projektstruktur des Tutorials?
Im Prinzip schon. Hab mich auch zu Multimodule-Projekten mit Maven etwas belesen und finde die Struktur eigentlich auch gar nicht so schlecht. Der Vorteil ist, du kannst den Service-Teil vollkommen unabhängig von dem Presentation Layer testen. Wenn ich dann bspw. JSF verwenden möchte (was ich noch machen möchte; momentan bin ich noch am probieren, wie ich ein Maven-Projekt mit JSF aufsetze, habs fast geschafft), dann mache ich einfach ein Webapp-Projekt auf oder was auch immer. Das steht mir frei. Nebenbei kann ich natürlich immer noch nachschauen, wie der Autor das in dem Beispiel gemacht hat.

Für die Maven-Projekterstellung verwende ich m2eclipse, arbeite gar nicht mit der Konsole.

In deinem ApplicationContext.xml (bei dir spring.config.xml) muss noch so etwas wie das hier stehen, damit Spring die Beans auch solche erkennt:
[XML]<context:component-scan base-package="deinPackageName">
</context:component-scan>[/XML]
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Resource Liste Lazy Autowired Spring Context Frameworks - Spring, Play, Blade, Vaadin & Co 2
bueseb84 Unit Test mit Spring Boot - Service Autowired Frameworks - Spring, Play, Blade, Vaadin & Co 5
J Spring Boot Autowired Problem Frameworks - Spring, Play, Blade, Vaadin & Co 2
Y Liferay + Spring + Spring Mvs -> @Autowired geht nicht Frameworks - Spring, Play, Blade, Vaadin & Co 0
boxi Spring ignoriert @Autowired Frameworks - Spring, Play, Blade, Vaadin & Co 2
R Spring Boot: Endpoint kann nicht gefunden werden (404) Frameworks - Spring, Play, Blade, Vaadin & Co 15
R Spring Boot läuft nicht auf Ubuntu Frameworks - Spring, Play, Blade, Vaadin & Co 6
OnDemand Spring Boot/Vaadin/Azure Session Speichern Frameworks - Spring, Play, Blade, Vaadin & Co 5
OnDemand Spring Boot seltsame Aufrufe zu Google Frameworks - Spring, Play, Blade, Vaadin & Co 2
R Spring Boot Embedded mongo Frameworks - Spring, Play, Blade, Vaadin & Co 4
ExceptionOfExpectation Spring Boot Web Werten Übergabe Frameworks - Spring, Play, Blade, Vaadin & Co 2
R Mehrere WebSocket-Instanzen in Spring Boot dynamisch bereitstellen Frameworks - Spring, Play, Blade, Vaadin & Co 0
R Spring Boot Tabellenverknüpfung Frameworks - Spring, Play, Blade, Vaadin & Co 1
W Kotlin: DB-Relationen in Spring Boot Data / Hibernate Frameworks - Spring, Play, Blade, Vaadin & Co 6
ExceptionOfExpectation Spring Boot Thymeleaf Input Type=radio für Enum Property Frameworks - Spring, Play, Blade, Vaadin & Co 1
8u3631984 Ist es möglich in Spring Entity generische Listen verwenden Frameworks - Spring, Play, Blade, Vaadin & Co 3
R Spring Boot Test Assertions mit Objekten Frameworks - Spring, Play, Blade, Vaadin & Co 6
8u3631984 Pfad zu Test Datei in application.yml in Spring Boot Test Frameworks - Spring, Play, Blade, Vaadin & Co 7
R Spring Boot sql Beziehungen Frameworks - Spring, Play, Blade, Vaadin & Co 12
8u3631984 Spring JPA Probleme beim SPeichern von Sets Frameworks - Spring, Play, Blade, Vaadin & Co 3
M Spring Boot 3 Datenbanken zur Laufzeit Verbinden Frameworks - Spring, Play, Blade, Vaadin & Co 5
8u3631984 Spring JDBC Probleme beim Spaltennamen Frameworks - Spring, Play, Blade, Vaadin & Co 3
LimDul Spring-Batches in Docker über Rest starten/verfolgen Frameworks - Spring, Play, Blade, Vaadin & Co 0
ExceptionOfExpectation In Meiner Spring-Boot Applikation verlangt die Datenbank Wert für eine ID Frameworks - Spring, Play, Blade, Vaadin & Co 5
H Spring Boot Applikation und JHM Benchmark sowie ContextConfiguration in H2 Tests ich bekomme es nicht hin Frameworks - Spring, Play, Blade, Vaadin & Co 2
ExceptionOfExpectation Tests in Spring-Boot Frameworks - Spring, Play, Blade, Vaadin & Co 4
R Eure Erfahrungen mit Primefaces und Spring - wer managed die Beans Frameworks - Spring, Play, Blade, Vaadin & Co 4
Avalon Get Request doppelt abfeuern ohne Post Redirect Get Pattern. Spring Boot Thymeleaf MVC Frameworks - Spring, Play, Blade, Vaadin & Co 12
thor_norsk Konfigurationsprobleme mit Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 9
R Spring Boot Integration-testing mit Keycloak Frameworks - Spring, Play, Blade, Vaadin & Co 1
R Spring Boot Integration-testing mit Keycloak Frameworks - Spring, Play, Blade, Vaadin & Co 13
L Spring Data und Rest Controller? Frameworks - Spring, Play, Blade, Vaadin & Co 4
thor_norsk Spring Boot Fehler Frameworks - Spring, Play, Blade, Vaadin & Co 1
L Spring Data und Rest Conroller? Frameworks - Spring, Play, Blade, Vaadin & Co 4
thor_norsk Spring Boot und Docker Frameworks - Spring, Play, Blade, Vaadin & Co 5
B Spring Amazon-SP-Api Frameworks - Spring, Play, Blade, Vaadin & Co 3
8u3631984 Aktualisiere Spring Controller Frameworks - Spring, Play, Blade, Vaadin & Co 4
L Spring Data: Modellierung mit einer Embeddable bean Frameworks - Spring, Play, Blade, Vaadin & Co 2
D Spring Boot Test ob Validation geprüft wurde Frameworks - Spring, Play, Blade, Vaadin & Co 8
K Spring Boot OneToMany Frameworks - Spring, Play, Blade, Vaadin & Co 6
8u3631984 Spring Boot Docker Image erstellen und mit docker-compose konfigurieren Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Wann Spring Batch nutzen? Frameworks - Spring, Play, Blade, Vaadin & Co 1
P Spring Hessian Remote Beispiel Frameworks - Spring, Play, Blade, Vaadin & Co 20
8u3631984 Spring 2.7.8 Info Enpoint nicht zuerreichen Frameworks - Spring, Play, Blade, Vaadin & Co 1
gradlew.bat spring-boot:run funktioniert nicht Frameworks - Spring, Play, Blade, Vaadin & Co 4
Zrebna Spring Boot/Thymeleaf: Bestätigungsemail senden. Frameworks - Spring, Play, Blade, Vaadin & Co 2
Zrebna Spring - Thymeleaf: Wieso wird gem. Fallunterscheidung entsprechende View nicht geladen? Frameworks - Spring, Play, Blade, Vaadin & Co 3
Dimax Spring UsernameNotFoundException(msg); auf der View msg ausdrücken Frameworks - Spring, Play, Blade, Vaadin & Co 1
Dimax Spring UsernameNotFoundException(Message) auf der View Message ausdrücken Frameworks - Spring, Play, Blade, Vaadin & Co 2
B Spring Boot und JPA Error creating bean Frameworks - Spring, Play, Blade, Vaadin & Co 24
R Spring Security: Wie kommt 'UserDetails' an Username und Passwort ran? Frameworks - Spring, Play, Blade, Vaadin & Co 6
R Spring Security: Wie den User dynamisch authentifizieren? Frameworks - Spring, Play, Blade, Vaadin & Co 8
R Spring Security: Authentication & Permissions Frameworks - Spring, Play, Blade, Vaadin & Co 4
R Spring Boot: Warum soll PasswordEncoder in einer neuen Methode definiert sein? Frameworks - Spring, Play, Blade, Vaadin & Co 1
8u3631984 Cross-Origin beim Abrufen von Spring Endpoint Frameworks - Spring, Play, Blade, Vaadin & Co 1
D Spring Boot und Microservices Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Spring Boot additional Datasource for a single entity Frameworks - Spring, Play, Blade, Vaadin & Co 0
T Spring Resourcen Ordner ermitteln Frameworks - Spring, Play, Blade, Vaadin & Co 5
B Spring JPA und Repository Frameworks - Spring, Play, Blade, Vaadin & Co 12
D Mapstruct Dependency Injection funktioniert nicht mit Spring Frameworks - Spring, Play, Blade, Vaadin & Co 15
Avalon Wie sieht bei Euch das Deployment einer Spring Boot Anwendung aus? Frameworks - Spring, Play, Blade, Vaadin & Co 4
M Threads in Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 7
W DI-Problem in Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 4
T Spring Boot: Was bewirkt parent in maven genau? Frameworks - Spring, Play, Blade, Vaadin & Co 4
T Spring Security: Run-as replacement Einsatzbereich? Frameworks - Spring, Play, Blade, Vaadin & Co 1
OnDemand Vaadin+Spring Boot erster Seitenload nach Neustart endlos Frameworks - Spring, Play, Blade, Vaadin & Co 0
doncarlito87 Wie erhalte ich ein JSON aus eine NativeQuery (Spring Boot)? Frameworks - Spring, Play, Blade, Vaadin & Co 8
Avalon @Query Select Abfrage liefert falsche Werte (Spring Boot, JPA, Hibernate) Frameworks - Spring, Play, Blade, Vaadin & Co 3
Avalon Erstellung Dockerimage mit spring-boot:build-image in Spring Boot mit Umgebungsvariablen Frameworks - Spring, Play, Blade, Vaadin & Co 0
N Spring Integration - Logging Frameworks - Spring, Play, Blade, Vaadin & Co 7
D Spring Boot Field Injection in MapStruct Frameworks - Spring, Play, Blade, Vaadin & Co 5
D Spring Anfänger benötigt Hilfe Frameworks - Spring, Play, Blade, Vaadin & Co 9
OnDemand Spring Boot seltsame Logeinträge: Manipulationsversuche? Frameworks - Spring, Play, Blade, Vaadin & Co 2
D Spring Date keine neue Tabelle fuer Attribut Frameworks - Spring, Play, Blade, Vaadin & Co 1
T Spring Security Config File anpassen Frameworks - Spring, Play, Blade, Vaadin & Co 1
8u3631984 Spring Cloud : Resttemplate mit Loadballancer Frameworks - Spring, Play, Blade, Vaadin & Co 11
Dimax Spring resource not found Frameworks - Spring, Play, Blade, Vaadin & Co 2
M Spring MongoDB unique index Frameworks - Spring, Play, Blade, Vaadin & Co 3
M Spring Entity testen Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Spring Entity testen Frameworks - Spring, Play, Blade, Vaadin & Co 5
Dimax Spring App Probleme beim Ausführen auf dem Tomcat Server Frameworks - Spring, Play, Blade, Vaadin & Co 1
D Spring WebFlux Cors konfigurieren Frameworks - Spring, Play, Blade, Vaadin & Co 1
Dimax Schöne View mit anchor scrolling in Spring Frameworks - Spring, Play, Blade, Vaadin & Co 2
Dimax Spring JPA Multiple Keys Frameworks - Spring, Play, Blade, Vaadin & Co 3
S Spring Security mit oauth2 in lokaler Konfiguration principal mocken Frameworks - Spring, Play, Blade, Vaadin & Co 0
D Spring Boot Mile Stone und Snapshot Versionen Frameworks - Spring, Play, Blade, Vaadin & Co 2
OnDemand Spring Boot Exception Body Frameworks - Spring, Play, Blade, Vaadin & Co 2
D Was ist das Framework "Spring"? Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Spring Unit/Integrations Testing Frameworks - Spring, Play, Blade, Vaadin & Co 3
D Spring Unit Test: UnsatisfiedDependencyException: Error creating bean with name Frameworks - Spring, Play, Blade, Vaadin & Co 2
M Java Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 5
M Spring Security Login with Credentials Frameworks - Spring, Play, Blade, Vaadin & Co 0
N Spring Boot - Overkill für private Projekte? Frameworks - Spring, Play, Blade, Vaadin & Co 3
krgewb Spring und GWT - & wird zu & amp; Frameworks - Spring, Play, Blade, Vaadin & Co 2
K Migration eines internen Frameworks zu Spring:Boot Frameworks - Spring, Play, Blade, Vaadin & Co 0
OnDemand JPA/Spring Repository Like Suche leeres Ergebnis Frameworks - Spring, Play, Blade, Vaadin & Co 0
Z Hibernate & Postgres in Spring Boot (Syntaxprobleme) Frameworks - Spring, Play, Blade, Vaadin & Co 2
Z Spring Boot mit JPA;, Hibernate, Rest & Lombok Frameworks - Spring, Play, Blade, Vaadin & Co 8
M Spring Initializer - Webservices Frameworks - Spring, Play, Blade, Vaadin & Co 0
D Spring Hateoas Frameworks - Spring, Play, Blade, Vaadin & Co 1

Ähnliche Java Themen

Neue Themen


Oben