shiro配置报错,好心人给看看吧

kingsavage 2014-08-12 10:20:16
第一个错误:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'securityManager' defined in class path resource [spring-config-shiro.xml]: Cannot resolve reference to bean 'userRealm' while setting bean property 'realm'
报错的位置:
<!-- 安全管理器 -->
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="userRealm" />
<property name="sessionManager" ref="sessionManager" />
<property name="cacheManager" ref="cacheManager" />
<property name="rememberManager" ref="rememberManager" />
</bean>
<!-- Realm的实现 -->
<bean id="userRealm" class="com.core.realm.UserRealm">
<property name="credentialsMatcher" ref="credentialsMatcher" />
<property name="cachingEnabled" value="false" />
</bean>

userRealm的名字,包路径肯定没错

然后再往下看,第二个错误:
nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRealm': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.core.service.UserService com.core.realm.UserRealm.userService
public class UserRealm extends AuthorizingRealm {

@Autowired
private UserService userService;
...}

也有引用啊。
再往下看,第三个错误:
nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.core.dao.UserDao com.core.serviceImpl.UserSercieImpl.userDao
@Service("userService")
public class UserSercieImpl implements UserService{

@Autowired
private UserDao userDao;
...}

如果我把当前的shiro.xml注释掉,程序是能正常启动的,但到这个securityManager->userRealm->userService->userDao就提示我这些错误,什么原因呢?

谁能好心帮我看看,谢谢
...全文
4255 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingsavage 2014-08-12
  • 打赏
  • 举报
回复
我的Dao实现用的是spring data,所以就写了个接口继承了它的CrudRepository,这样就不用去写Dao的实现了,所以能不能帮我看看,现在的情况下是怎么回事?多谢了
  • 打赏
  • 举报
回复
引用 2 楼 kingsavage 的回复:
1.我的UserServiceImpl
@Service("userService")
public class UserSercieImpl implements UserService{

	@Autowired
	private UserDao userDao;
...}
2.我的UserDao是接口
@Repository("userDao")
public interface UserDao extends CrudRepository<User, Integer>{
	User findByUsername(String username);
}
3.UserDao上边确实有Repository。。。 救救我吧,多谢
亲,你把你的UserDao 改成接口形式的, 如: 将UserDao提一个接口,叫IUserDao 然后用UserDao 去 实现 IUserDao。 然后再用@Autowired
  • 打赏
  • 举报
回复
Spring的注入基于接口实现,基于接口的方式一是可以使得各个组件松耦合,而且也可以轻松的替代某一组件。 所以应该讲组件引用改为接口方式。
kingsavage 2014-08-12
  • 打赏
  • 举报
回复
1.我的UserServiceImpl
@Service("userService")
public class UserSercieImpl implements UserService{

	@Autowired
	private UserDao userDao;
...}
2.我的UserDao是接口
@Repository("userDao")
public interface UserDao extends CrudRepository<User, Integer>{
	User findByUsername(String username);
}
3.UserDao上边确实有Repository。。。 救救我吧,多谢
  • 打赏
  • 举报
回复
三种情况:不能自动注入 1、你的UserSercieImpl必须以@Service或@Component注解才行。 2、自动写入的时候把接口写成实现类了 如:你的UserDao是实现类么? 3、在UserDao 类上加上@Repository注解
  • 打赏
  • 举报
回复
引用 6 楼 kingsavage 的回复:
找到原因了:
<bean id="userRealm" class="com.core.realm.UserRealm" depends-on="userDao,roleDao,resourceDao">
		<property name="userService" ref="userService"/>
		<property name="credentialsMatcher" ref="credentialsMatcher" />
		<property name="cachingEnabled" value="false" />
	</bean>
在自定义realm中,一定要用depends-on加入所有的userService依赖dao
我去,还有这样的...这个我倒是没见过
kingsavage 2014-08-12
  • 打赏
  • 举报
回复
找到原因了:
<bean id="userRealm" class="com.core.realm.UserRealm" depends-on="userDao,roleDao,resourceDao">
		<property name="userService" ref="userService"/>
		<property name="credentialsMatcher" ref="credentialsMatcher" />
		<property name="cachingEnabled" value="false" />
	</bean>
在自定义realm中,一定要用depends-on加入所有的userService依赖dao
下载代码方式:https://pan.quark.cn/s/dd3561eca308 在软件开发领域,面向对象编程(OOP)是一种普遍采纳的结构化方法,它使得开发者能够借助模拟现实环境中的实体和关系来构建软件系统。在本案例中,我们观察到的是一个关于借助抽象类来执行不同几何图形面积求解的实践应用。现在,让我们详细分析这一议题。 标题 "应用抽象类计算面积" 清晰地表明我们将要讨论一个抽象类,此类设定了一个用于测量图形面积的标准函数,但并未提供实际的执行过程。抽象类在诸如C#或Java等编程语言中通常借助`abstract`修饰符进行声明,它们无法直接创建对象实例,仅能作为其他类的基础模板。 描述部分提及的"图形界面应用"暗示这是一个基于视觉用户界面(GUI)的系统,可能运用了.NET Framework的Windows Forms或WPF技术,或者是Java平台的Swing或JavaFX框架。在这样环境下,用户能够通过视觉元素与这些几何体进行互动,例如输入相关尺寸并观看到计算得出的面积值。 抽象类“几何体”内嵌了“计算面积”这一抽象函数。在代码层面,这可以被表述为: ```csharp public abstract class GeometricShape { public abstract double CalculateArea(); } ``` 随后,有三个派生类:圆(Circle)、矩形(Rectangle)和三角形(Triangle),它们各自提供了这个抽象函数的具体实现。比如,圆的面积是通过π乘以半径的平方得到的,矩形的面积是长和宽的乘积,而三角形的面积可能是底乘以高再除以2的结果。这些类将提供具体实现来计算它们各自的面积: ```csharp p...
内容概要:本文系统研究了移相控制全桥LLC谐振变换器的工作特性,深入分析其在不同工作模式下的运行机理与性能表现,重点探讨了软开关实现、高效率能量转换及宽范围电压调节等关键技术优势。通过Simulink搭建精确的仿真模型,对谐振腔参数、开关频率、电压增益、系统效率等关键指标进行仿真分析,验证了理论设计的正确性。同时,详细研究了移相控制策略对系统动态响应、稳定性和轻载/重载工况适应性的影响,揭示了控制参数与电路参数之间的耦合关系,为高频高效电源设计提供了理论依据和实践指导。; 适合人群:具备电力电子技术、模拟电路及自动控制理论基础,从事开关电源、新能源变换器、电动汽车充电模块或高频电源系统研发的工程师及高校研究生。; 使用场景及目标:①掌握全桥LLC谐振变换器的拓扑结构、工作原理与关键参数设计方法;②理解移相控制在实现零电压开通(ZVS)和零电流关断(ZCS)中的作用机制;③通过Simulink仿真掌握变换器建模、参数优化与性能评估流程,服务于实际产品开发与学术课题研究。; 阅读建议:建议读者结合提供的Simulink仿真模型进行同步操作,重点关注谐振网络(Lr, Lm, Cr)参数与移相角之间的匹配设计,深入理解软开关条件的形成过程,并通过调整负载和输入电压进行多工况仿真,以全面掌握系统动态特性。

67,535

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧