我通过注释遇到了弹簧DI问题,这是我的应用:
@Service
public class Test {
@Autowired
private GpsPointEntityDao gpsPointEntityDao;
public void test() {
if (gpsPointEntityDao == null)
System.out.println("It's null!\n" + gpsPointEntityDao);
}
}
通用接口:
public interface GenericDao
具体界面:
public interface GpsPointEntityDao extends GenericDao
抽象实现:
abstract class AbstractGenericDaoJpa
具体课程:
@Repository
public class GpsPointEntityDaoJpa extends AbstractGenericDaoJpa
我的appcontext:
factorybean"
p:dataSource-ref="basicDataSource"/>
应用程序的结果是:
它是空的!
我一整天都在寻找问题,但没有成功.有人看到问题的地方?
我在日志中发现了这条消息:
INFO org.springframework.context.support.ClassPathXmlApplicationContext - Bean 'entityManagerFactory' of type [class org.springframework.orm.jpa.LocalContainerEntityManagerfactorybean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
最佳答案
我没有看到这个问题.使用与您发布的代码大致相同的代码,我运行了这个:
public static void main(String[] args) {
Test bean = new ClassPathXmlApplicationContext("/applicationContext.xml").getBean(Test.class);
bean.test();
}
正确注入了测试bean.如果你想看一下,我可以让我的测试项目可用.您确定要获得Test的注入版本吗?你是如何获得它的?
编辑:您的实例未被注入,因为您自己实例化而不是让Spring执行此操作.除非你是use AspectJ to inject objects,否则Spring只会注入它正在管理的对象.当你调用new Test()时,你没有从Spring获取实例,而Spring对你创建的实例一无所知.