@Component 相当于实例化类的对象,其他三个注解可以理解为@Component的子注解或细化。
在annotaion配置注解中用@Component来表示一个通用注释用于说明一个类是一个spring容器管理的类,此类将有spring扫描并加入容器参与ioc。即就是该类已经拉入到spring的管理中了。
通过在classpath中通过自动扫描方式把组建纳入spring容器管理。
要使用自动扫描机制我们需要打开一下配置信息:
Bean.xml代码
注:前面讲要使用注解需要配置:<context:annotation-config />但如果使用了@Component就不需要加它了,因为:<context:component-scan base-package="com.zchen">里面默认了<context:annotation-config />。
而@Controller, @Service, @Repository是@Component的细化,这三个注解比@Component带有更多的语义,它们分别对应了控制层、服务层、持久层的类。
@Component泛指组件,当组件不好归类的时候我们可以使用这个注解进行标注,(现在可以都用此注解,可以只使用单一组件)
Java代码@Repository标签是用来给持久层的类定义一个名字,让Spring根据这个名字关联到这个类。
例如:
@Repository(value="userDao")-----也可以直接写@Repository("userDao"),如果没有命名,default name 是class name: UserDaoImplpublic class UserDaoImpl implements UserDao{ ........................................}
保证这个类在bean.xml中<context:component-scan base-pakage="com.czhen">com.czhen pakage dir下。
注解Repository后可以直接使用@autowire 直接注入 managerImpl中,如:
@Autowire
private UserDaoImpl userDaoImpl;
一般来说@Controller(控制层) 是action入口,调用@Service(业务层) ,Service再调用@Repository (持久层)完成数据持久化。
新闻热点
疑难解答