Я ' m играет с идеей использования Spring @Configurable
и @Autowire
для внедрения DAO в объекты домена, чтобы им не требовалось непосредственное знание уровня персистентности.
Я пытаюсь следовать 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");
}
}
В application-context.xml у меня есть:
Сканирование и инициализация пути к классам выполняется модулем spring для Play! framework, хотя другие компоненты с автоматическим подключением работают, поэтому я уверен, что это не основная причина. Я использую Spring 3.0.5.
В другом коде (фактически внутри метода в bean-компоненте, который вводится в мой контроллер с помощью Spring) я делаю следующее:
Artist artist = new Artist();
artist.save();
Это дает мне исключение NullPointerException при попытке доступа к artistDao в Artist.save ().
Есть идеи, что я делаю не так?
Мартин