Я играю с идеей использования Spring @Configurable
и @Autowire
для ввода DAO в объекты домена, чтобы они не нуждались в непосредственном знании уровня персистентности.Весна автоволна с использованием @Configurable
Я пытаюсь следовать http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/aop.html#aop-atconfigurable, но мой код, кажется, не имеет никакого эффекта.
В принципе, у меня есть:
@Configurable
public class Artist {
@Autowired
private ArtistDAO artistDao;
public void setArtistDao(ArtistDAO artistDao) {
this.artistDao = artistDao;
}
public void save() {
artistDao.save(this);
}
}
И:
public interface ArtistDAO {
public void save(Artist artist);
}
и
@Component
public class ArtistDAOImpl implements ArtistDAO {
@Override
public void save(Artist artist) {
System.out.println("saving");
}
}
В прикладном context.xml, у меня есть:
<?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>
Сканирование и инициализация траектории дорожки выполняется модулем пружины для воспроизведения! хотя другие автообработанные бобы работают, поэтому я уверен, что это не основная причина. Я использую Spring 3.0.5.
В другом коде (внутри метода в компоненте, который вводится в мой контроллер с помощью Spring, на самом деле), я делаю это:
Artist artist = new Artist();
artist.save();
Это дает мне NullPointerException пытается получить доступ к artistDao в Художника .спасти().
Любая идея, что я делаю неправильно?
Martin
related;) http://techblog.bozho.net/?p=180 – Bozho
Можете ли вы использовать аннотацию '@ Value' в своем классе« @ Configurable »Artist? – NightWolf