我最近學到spring和mybatis整合的時候,發現autowired使用不了,就是空指標。可是之前使用ClassPathXmlApplicationContext的時候是可以getbean的。然后我寫了個測驗。結果也就是不行,請求各位大佬幫助。
@Component
@ComponentScan
public class test{
@Autowired
private Master m;
private Master m2;
@Test
public void test1() {
ClassPathXmlApplicationContext ac= new ClassPathXmlApplicationContext("beans.xml");
m2=(Master) ac.getBean("m");
if(m==null)
System.out.println("autowired失效");
if(m2==null)
System.out.println("getbean失效");
}
}
然后我xml里是有scan和bean的,然后這個bean的class是我從model里找的,也是有物體類。
<context:component-scan base-package="cn.com.test,cn.com.Dao,cn.com.Service"/>
<bean id="m" class="cn.com.model.Master"></bean>
就是很不解。。。請求各位大佬幫我看看
uj5u.com熱心網友回復:
你把一個注入的賦給一個沒有注入的,ioc找不到m2。uj5u.com熱心網友回復:
這個運行下來,就m2是可以的,但是m是不行,我后來測驗好多種方法,添加@RunWith(SpringJUnit4ClassRunner.class)和@ContextConfiguration(locations = {"classpath:beans.xml"})就可以運行了,但是我要是使用@component就不行,他會告訴我找不到applicationcontext,但是我是web.xml里設定的,就沒明白也uj5u.com熱心網友回復:
我看你物體類的包并沒有掃描
uj5u.com熱心網友回復:
@Autowiredprivate Master m;
@Autowired
private Master m2;
這樣寫就可以啦
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/80264.html
標籤:Web 開發
下一篇:微信小程式內的即時通訊功能
