spring的一些疑惑,求帮助

本人使用Spring+mybatis时有一点疑惑。
当在Service层只有一个类时
@Service
public UserService{

@Autowired
private UserMapper mapper;
}
然后在使用时发现mapper是空的
但是如果先把UserService声明成接口,然后再写一个实现类,结果mapper就不是空的,可以正常使用。
求大神解答!!!!!!!!!>_<

spring在注入时默认使用的是JDK自带代理方式(java.lang.reflect包),而其要求实际代理对象(你的UserService)必须要有接口,如果想要没有接口即可实现的话注入,需要指明spring使用cglib 来实现代理。大概是这样的原因。