/ / integracja sprężyn3 i rozpórek2 - sprężyna, sprężyna-mvc, rozpórki2, integracja sprężynowa

integracja spring3 i struts2 - sprężyna, sprężyna-mvc, rozpórki2, integracja sprężyny

Używam struts2 i hibernacji w mojej aplikacji. Dodałem ContextLoaderListener do web.xml .

W ApplicationContext.xml, Mam 2 takie fasole:

<bean id="TestImpl"
class="Service.Impl.TestImpl">
</bean>
<bean id="testaction"
class="Action.TestAction">
<property name="TestIml" ref="TestImpl"/>
</bean>

W klasie TestAction mam obiekt i metodę tego obiektu w następujący sposób:

private TestImpl test1;
String m = test1.testService();

Ma również ustawiony i ustawiony. kiedy uruchamiam ten projekt, jeśli chodzi o

String m = test1.testService()

Pojawia się wyjątek nullPointerException. Nie jestem pewien, czy cała konfiguracja została wykonana poprawnie lub coś pominięto. proszę pomóż.

Odpowiedzi:

1 dla odpowiedzi № 1

Skoro już używasz Struts2 + Spring, dlaczego nie użyć ich wtyczki? które można znaleźć tutaj

Używając wtyczki, uzyskujesz ściślejszą integrację z Struts 2. Daje ci to możliwość wstrzykiwania fasoli do wewnętrznych obiektów ramowych, a nie tylko do własnych fasoli.

Na przykład z wtyczką Struts 2 będziesprawdź wszystkie swoje działania, gdy tworzy je, aby obsłużyć żądanie, i wstrzyknij je. Domyślnie wtyczka Struts2-spring używa autowire po nazwie. więc na przykład w klasie akcji masz ten kod.

public class LoginAction extends UserAction{

public String execute() {
return "success";
}

public AuthenticateLoginService getAuthenticateLoginService() {
return authenticateLoginService;
}

public void setAuthenticateLoginService(
AuthenticateLoginService authenticateLoginService) {
this.authenticateLoginService = authenticateLoginService;
}

private AuthenticateLoginService authenticateLoginService;

}

W swoim pliku applicationContext.xml masz tę konfigurację.

<bean id="authenticateLoginService" class="services.AuthenticateLoginService"
scope="singleton">
<... some properties here
</bean>

Wszystkie klasy akcji, które mają zmienną instancji o nazwie „authenticateLoginService”, wiosna wstrzyknie authenticateLoginService bean do wszystkich klas o nazwie zmiennej instancji authenticateLoginService , pod warunkiem, że ma setery i gettery


0 dla odpowiedzi nr 2

Twój test1 jest null to dlaczego rzuca null pointer exception na to String m = test1.testService() linia.

Nie jestem pewien, ale możesz spróbować tego. property name="test1" zamiast property name="TestIml"