Spring注解@Component、@Repository、@Service、@Controller区别

        spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repository@Service  @Controller。在目前的 Spring 版本中,这 3 个注释和 @Component 是等效的,但是从注释类的命名上,很容易看出这 3 个注释分别和持久层、业务层和控制层(Web 层)相对应。虽然目前这 3 个注释和 @Component 相比没有什么新意,但 Spring 将在以后的版本中为它们添加特殊的功能。所以,如果Web 应用程序采用了经典的三层分层结构的话,最好在持久层、业务层和控制层分别采用 @Repository@Service  @Controller 对分层中的类进行注释,而用 @Component 对那些比较中立的类进行注释。 

         在一个稍大的项目中,通常会有上百个组件,如果这些组件采用xmlbean定义来配置,显然会增加配置文件的体积,查找以及维护起来也不太方便。 Spring2.5为我们引入了组件自动扫描机制,他可以在类路径底下寻找标注了@Component,@Service,@Controller,@Repository注解的类,并把这些类纳入进spring容器中管理。它的作用和在xml文件中使用bean节点配置组件时一样的。


@Controller
@Scope("prototype") 采用多例模式
public class UserAction extends ActionSupport implements ModelDriven<User> {
    @Resource
	private UserService userService; 
    ...
}

@Service
@Transactional 事务注解
public class UserService {
    @Resource
	private UserDao userDao;
    ...
}

@Repository
public class UserDao extends HibernateDaoSupport {
    @Resource
	private SessionFactory sessionFactory;
    ...
}

就相当于


     <!-- Action的配置 -->
     <bean id="userAction" class="com.itcast.shop.user.action.UserAction" scope="prototype">
	 <property name="userService" ref="userService"/>
     </bean>
	
    <!-- Service的配置 ===========================-->
    <bean id="userService" class="com.itcast.shop.user.service.UserService">
        <property name="userDao" ref="userDao"/>
    </bean>
    
    <!-- Dao的配置 ===========================-->
    <bean id="userDao" class="com.itcast.shop.user.dao.UserDao">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>


       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值