gpt4 book ai didi

java - 使用 @Configurable 的 Spring Autowiring

转载 作者:IT老高 更新时间:2023-10-28 13:44:27 44 4
gpt4 key购买 nike

我正在尝试使用 Spring @Configurable@Autowire 将 DAO 注入(inject)域对象,这样它们就不需要直接了解持久层.

我正在尝试关注 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 中,我有:

<?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>

类路径扫描和初始化由 Play 的 spring 模块执行!框架,虽然其他 Autowiring 的 bean 工作,所以我很确定这不是根本原因。我正在使用 Spring 3.0.5。

在其他代码中(实际上是在使用 Spring 注入(inject)到我的 Controller 中的 bean 方法中),我正在这样做:

Artist artist = new Artist();
artist.save();

这给了我一个 NullPointerException 尝试访问 Artist.save() 中的 artistDao。

知道我做错了什么吗?

马丁

最佳答案

您需要启用加载时编织(或其他类型的编织)才能使用 @Configurable。确保您正确启用它,如 7.8.4 Load-time weaving with AspectJ in the Spring Framework 中所述.

关于java - 使用 @Configurable 的 Spring Autowiring ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4703206/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com