当我使用Hibernate时,我有一个像这样的配置类:
<?php
namespace AppBundle\Controller;
use Symfony\Component\HttpFoundation\Request;
class DetectServiceDetailController
{
public $request;
public function __construct(Request $request)
{
$this->request = $request;
$serviceType = $this->request->query->get('type');
return $serviceType;
}
}
然后我想确保这个配置类工作正常,所以我写了一个单元测试,如下所示:
@Configuration
@ComponentScan
public class HibernateConfiguration {
@Bean
public LocalSessionFactoryBean sessionFactory() {
return new LocalSessionFactoryBean();
}
}
然后Intellij一直告诉我这条消息,它也没有编译失败所以它不是一个Intellij错误:
无法自动装配。找不到
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = HibernateConfiguration.class) public class HibernateConfigurationTest { @Autowired private LocalSessionFactoryBean localSessionFactoryBean; @Test public void someTest(){ } }
类型的bean。
我将LocalSessionFactoryBean
更改为LocalSessionFactoryBean
后,工作正常。
SessionFactory
以下是@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = HibernateConfiguration.class)
public class HibernateConfigurationTest {
@Autowired
private SessionFactory localSessionFactoryBean;
@Test
public void someTest(){
}
}
的源代码:
LocalSessionFactoryBean
以下是一些版本信息:
public class LocalSessionFactoryBean extends HibernateExceptionTranslator
implements FactoryBean<SessionFactory>, ResourceLoaderAware, InitializingBean, DisposableBean {
}
那么为什么Spring在使用<properties>
<springframework.version>4.0.6.RELEASE</springframework.version>
<hibernate.version>4.3.6.Final</hibernate.version>
<mysql.version>5.1.31</mysql.version>
<joda-time.version>2.3</joda-time.version>
<testng.version>6.9.4</testng.version>
<mockito.version>1.10.19</mockito.version>
<h2.version>1.4.187</h2.version>
<dbunit.version>2.2</dbunit.version>
</properties>
时无法自动发送?我认为我对Spring bean的类型推断有一些误解,因为在我看来下面的方法{{1在配置类中将注册一个类型为LocalSessionFactoryBean
的bean,而不是@Bean
,然后自动装配应该可以正常工作,但事实并非如此。任何人都可以给我一些学习材料吗?我试图搜索类似的东西,得到的结果很少。非常感谢!
答案 0 :(得分:0)
您需要注入SqlSessionFactory而不是SessionFactory。