MyBatis之@Repository注解
@Repository是Spring框架提供的一种注解,来自如下包
import org.springframework.stereotype.Repository;
一般在SSM开发中编写MyBatis的DAO接口时使用,如下所示
@Repository
public interface UserDao{
}
在DAO接口中注解了@Repository之后,在Service层才能利用Spring的容器注入
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
}
在这里注意,如果DAO接口上不使用注解的话,是不能在Service中使用@Autowired进行注入的(经过试验之后,发现是可以不加@Repository注解的),或者使用配置文件的方式。
被发现的映射器将会使用 Spring 对自动侦测组件(参考 Spring 手册的 3.14.4)默认的命
名策略来命名。也就是说,如果没有发现注解,它就会使用映射器的非大写的非完全限定类名。但是如果发现了@Component 或 JSR-330
的@Named 注解,它会获取名称。注意你可以 配 置 到 org.springframework.stereotype.Component
, javax.inject.Named(如果你使用 JSE 6 的话)或你自己的注解(肯定是自我注解)中,这
样注解将会用作生成器和名称提供器。
所以在DAO持久层的Mapper接口上即使不加@Repository,@Component等注解,也能注入实例到Spring中,被Service层引用。
<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>