关于spring学习中向控制层servlet注入依赖bean及dao层获取sqlsession遇到的坑做的学习笔记
1.向控制层servlet注入依赖bean
- 因为servlet不能被spring扫描所以我们需要定义一个基类,并让这个工具类复写HttpServlet 的init 方法
其中红框内的两行语句是让spring向servlet注入依赖bean的关键代码(使用其中一句就可以)
SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this, config.getServletContext());
// WebApplicationContextUtils.getWebApplicationContext(getServletContext()).getAutowireCapableBeanFactory().autowireBean(this);
- 然后只要让需要注入依赖bean的servlet继承这个基类就能让spring注入依赖bean
*
需要注意的是你注入的依赖bean必须是spring注解扫描能够扫描到的(必需使用注解)
2.dao层获取sqlsession
- spring核心配置文件中要配置以下内容
红框部分代码
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="classpath:sqlMapconfig.xml"></property>
</bean>
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
- 同样我们也写一个基类
该基类只定义一个SqlSessionTemplate 的sqlsession 并生成get set方法
private SqlSessionTemplate sqlsession;
**这样我们在需要注入sqlsession 的dao层中继承该基类就能直接获得sqlsession **
这里的getSqlsession是我们定义的基类中的getSqlsession
这里百度出来说service注入Controller时要和Sqlsession一样用setter方式注入,其实是不用的