Rozgrywam pomysł wykorzystania Spring @Configurable
i @Autowire
do wstawiania obiektów DAO do obiektów domenowych, aby nie potrzebowały bezpośredniej wiedzy o warstwie trwałości.Wiosenne testowanie za pomocą @Configurable
Próbuję podążać za http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/aop.html#aop-atconfigurable, ale mój kod wydaje się nie mieć żadnego efektu.
Zasadniczo mam:
@Configurable
public class Artist {
@Autowired
private ArtistDAO artistDao;
public void setArtistDao(ArtistDAO artistDao) {
this.artistDao = artistDao;
}
public void save() {
artistDao.save(this);
}
}
I:
public interface ArtistDAO {
public void save(Artist artist);
}
i
@Component
public class ArtistDAOImpl implements ArtistDAO {
@Override
public void save(Artist artist) {
System.out.println("saving");
}
}
W aplikacji context.xml, mam:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springsource.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean class="org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator" />
<bean class="org.springframework.beans.factory.aspectj.AnnotationBeanConfigurerAspect" factory-method="aspectOf"/>
</beans>
Skanowanie i inicjalizacja ścieżki klas odbywa się za pomocą modułu sprężyn do Play! ramy, chociaż działają inne autoczyred bean, więc jestem prawie pewien, że to nie jest podstawowa przyczyna. Używam Spring 3.0.5.
W innym kodem (wewnątrz metody w fasoli, który jest wtryskiwany do mojego kontrolera przy użyciu Spring, w rzeczywistości), to robię:
Artist artist = new Artist();
artist.save();
To daje mi NullPointerException próbuje uzyskać dostęp do artistDao w Artysty .zapisać().
Każdy pomysł, co robię źle?
Martin
związane;) http://techblog.bozho.net/?p=180 – Bozho
można używać '@ value' adnotacji w pliku' @ Configurable' oznaczone klasy artysty? – NightWolf