三种情况:不能自动注入1、你的UserSercieImpl必须以@Service或@Component注解才行。 2、自动写入的时候把接口写成实现类了   如:你的UserDao是实现类么? 3、在UserDao 类上加上@Repository注解

解决方案 »

  1.   

    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
    救救我吧,多谢
      

  2.   

    Spring的注入基于接口实现,基于接口的方式一是可以使得各个组件松耦合,而且也可以轻松的替代某一组件。
    所以应该讲组件引用改为接口方式。
      

  3.   

    亲,你把你的UserDao  改成接口形式的,  如:  将UserDao提一个接口,叫IUserDao
    然后用UserDao  去 实现  IUserDao。  然后再用@Autowired
      

  4.   

    我的Dao实现用的是spring data,所以就写了个接口继承了它的CrudRepository,这样就不用去写Dao的实现了,所以能不能帮我看看,现在的情况下是怎么回事?多谢了
      

  5.   

    找到原因了:
    <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