实现接口后自动注入不生效(spring接口自动注入)

网友投稿 921 2023-01-18


本篇文章给大家谈谈实现接口后自动注入不生效,以及spring接口自动注入对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享实现接口后自动注入不生效的知识,其中也会对spring接口自动注入进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

springboot 整合 mybatis dao一直自动注入失败

因spring3发布时mybatis还没有出正式版本,所以spring没有整合最新的mybatis.不过社区倒是开发了一个中间件。

需要的jar包

mybatis-3.0.6.jar

mybatis-spring-1.0.2.jar

要点:

在spring中配置mybatis工厂类

2.在dao层使用spring注入的的工具bean对数据进行操作

整合时,可以有四种方式来使用mybatis进行数据处理。

spring 中必须的配置。

spring的配置文件中加入以下内容

<!-- MyBatis配置 --

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"

<property name="dataSource" ref="c3p0DataSource" /

<property name="configLocation" value="/WEB-INF/config/db/MyBatisConfiguration.xml" /

<property name="mapperLocations" value="/WEB-INF/config/db/*Mapper.xml" /

<property name="typeAliasesPackage" value="${mybatis.alias.basepackage}" /

</bean

SqlSessionFactoryBean (必需)

就是中间件所需的处理类

2.dataSource  (必需)

spring中数据源引用

3.configLocation  (可选)

Mybatis自身的配置文件,一般用来声明别名

4.mapperLocation  (可选)

mybatis的映射文件

5.typeAliasesPackage (可选)

要映射类的包路径,如果使用了这种方式,则configLocation中不必再进行声明

使用mybatis进行数据处理的四种方式(SqlSessionTemplate/SqlSessionDaoSupport/MapperFactoryBean/MapperScannerConfigurer)

不同方式的特点

SqlSessionTemplate 这个需要写配置文件,在实现类中注入sqlsession,再使用sqlsession,是细颗粒控制

SqlSessionDaoSupport  这个只需要在实现类中继承特殊类就可以使用sqlsession

MapperFactoryBean  这个要写配置文件,把对应的所有接口在配置文件中引用即可,无需写实现类

MapperScannerConfigurer 这个要写配置文件,只要给出接口所在的包即可,会自动把包中的接口引入,无需写实现类

SqlSessionTemplate

配置文件加入新配

<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"

<constructor-arg index="0" ref="sqlSessionFactory" /

<constructor-arg index="1" value="BATCH" /<!--- 如果想要进行批量操作可加入这个属性 -

</bean


注入sqlsession()


@Reasource //使用spring3的注解注入

private SqlSession sqlSession;


使用sqlsession来进行操作


public User getUser(String userId) {

return (User) sqlSession.selectOne("org.mybatis.spring.sample.mapper.UserMapper.getUser", userId);

}


SqlSessionDaoSupport(sqlSessionFactory会被spring自动装配,不需要手动注入)

继承SqlSessionDaoSupport类


public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {


}


使用getSqlSession()方法取sqlSession来进行数据处理


public User getUser(String userId) {

return (User) getSqlSession().selectOne("org.mybatis.spring.sample.mapper.UserMapper.getUser", userId);

}


MapperFactoryBean

写配置文件,引入每个DAO接口


<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"

<property name="mapperInterface" value="org.mybatis.spring.sample.mapper.UserMapper" /

<property name="sqlSessionFactory" ref="sqlSessionFactory" /

</bean


在业务层可直接注入dao的接口进行操作

MapperScannerConfigurer

写配置文件,配置包名将自动引入包中的所有接口


<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"

<property name="basePackage" value="org.mybatis.spring.sample.mapper" /

</bean


在业务层可直接注入DAO接口操作,注入时使用的是接口名,其首字母小写

注意:如果有别的实现类,其提供的名称如果是接口名,且首字母小写,则会在启动时出现冲突错误

spring接口注入失败

看你的配置文件实现接口后自动注入不生效,应该没错实现接口后自动注入不生效,而你又说实现接口后自动注入不生效了是myeclipse崩溃后出的问题,因此我觉得不是代码问题,我想到的原因和解决方案有:
1. 项目没有编译好,将项目重新clean一下,选择菜单“project"-"clean"-"clean project selected below"-选中你的项目,点击确认;
2. tomcat缓存问题,删掉tomcat目录下,webapps目录下的工程、清空work目录、清空temp目录,再发布一次;
3. 工程出错,新建另一个项目,将原项目下所有的jar包和代码复制到新工程下,使用新工程发布;
4. jdk出错,我曾经遇到过ibm jdk使用aop,debug崩溃导致的项目再也不能debug,重新安装jdk后解决。
另外:
1. 你的代码中缺少了service层,并且事务直接配置在dao层,除非你的业务非常简单,每次只有一条sql,否则不建议你这样做;
2. 不要再用盗版的myeclipse了吧,免费的eclipse已经有比较好的解决方案了呀。

请问,java高手,spring为何要注入接口,而注入接口的实现类就会报错? jyjh jjhjh

1, 报错原因: 直接注入实现类是不符合spring自己的设计规范的;
2, spring依赖注入设计思想就是利用java的多态特性,减少耦合,实现在配置文件中通过配置,实现不用更改java硬编码,达到功能切换的目的, 所以注入的只能是接口,然后配置文件中切换其实现类;
3,注解出现后,多是在java文件中用注解注入,方便省事,而且一般来说,spring带了一种设计思想,但实际上在配置文件中真正需要切换的并不多,所以为了方便,又使用了注解这种硬编码;
4, 没有什么设计是万能的,根据实现情况来决定,一接口对应一个实现类的,直接用注解吧,真到了需要多个实现的时候,注解可以取注入的别名来指定实现类,也可以像以前一样配置在XML中, 并不冲突!

SSM框架中继承了接口的类让Spring管理为什么不能自动注入

<context:component-scan base-package="com.jsu.service,com.jsu.util"/
<!--配置session工厂--
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"
<property name="dataSource" ref="dataSource"/
<property name="mapperLocations" value="classpath:mybatis/*Mapper.xml"/
<property name="typeAliasesPackage" value="com.jsu.mapper"/
</bean
<!--扫描mapper代理对象--
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"
<!--设置扫描mapper的包--
<property name="basePackage" value="com.jsu.mapper"/
<!-- mapper接口需要用到sqlSessionFactory 如果上下文环境只有一个数据源 则不需要配置 --
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/
</bean
<!--配置通知--
<tx:advice id="txAdvice" transaction-manager="txManager"
<tx:attributes
<tx:method name="get*" read-only="true"/
<tx:method name="select*" read-only="true"/
<tx:method name="insert*" propagation="REQUIRED"/
<tx:method name="update×" propagation="REQUIRED

java Servlet 接口实现的方法使用无效

控制台有没有报异常? 在一个ClothtypedetailServerInter clothtypedetailServer = new ClothtypedetailServer();
System.out.println("clothtypedetailServer"+clothtypedetailServer);
接口的实力能打印吗?
在一个你说的ClothtypedetailServer的queryClothtypedetailByClothtype方法中添加:System.out.println("queryClothtypedetailByClothtype"),控制台没有打印 这个我个人认为只能说明servlet没有调用到该方法 看下你前台form中的method中的属性值是get还是post。

关于spring注解无法注入,我在service的实现类用@service(“accountSer

这个坑我也踩过实现接口后自动注入不生效,Spring设计原则是如果有接口有实现类实现接口后自动注入不生效,注解注入实现接口后自动注入不生效的时候必须使用接口注入实现接口后自动注入不生效,而不能使用实现类注入,你把@Resource(“accountService”)
private AccoutService accountService这个私有属性改为接口就可以注入了,或者不要实现任何类。我试了三个小时才试出来的。。。后来各种查资料。。。这是个大坑啊。。。 关于实现接口后自动注入不生效和spring接口自动注入的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 实现接口后自动注入不生效的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于spring接口自动注入、实现接口后自动注入不生效的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Spring Boot2.0中SpringWebContext找不到无法使用的解决方法
下一篇:Springboot整合Shiro之加盐MD5加密的方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~