Spring中的注解@Service @Component @Controller @Repository区别

@Service用于标注业务层组件,

@Controller用于标注控制层组件(如struts中的action),

@Repository用于标注数据访问组件,即DAO组件,

@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

 

这四个注解其实都是和Component差不多只是在语义上有些不一样,修饰的方法

请看下面的一个例子

dao层

 1 package cn.lonecloud.pagekageauto.dao;
 2 
 3 
 4 /**
 5  * dao层的接口
 6  * @Title: UserDao.java
 7  * @Package cn.lonecloud.pagekageauto.dao
 8  * @Description: 
 9  * @author lonecloud
10  * @date 2016年8月7日 上午11:49:47
11  */
12 public interface UserDao {
13     
14     public void save();
15 }
View Code

dao层实现类

 1 package cn.lonecloud.pagekageauto.dao.impl;
 2 
 3 import org.springframework.stereotype.Repository;
 4 
 5 import cn.lonecloud.pagekageauto.dao.UserDao;
 6 /**
 7  * dao层的实现类
 8  * @Title: UserDaoImpl.java
 9  * @Package cn.lonecloud.pagekageauto.dao.impl
10  * @Description: 
11  * @author lonecloud
12  * @date 2016年8月7日 上午11:50:04
13  */
14 @Repository
15 public class UserDaoImpl implements UserDao {
16 
17     @Override
18     public void save() {
19         System.out.println("测试保存");
20     }
21     //进行业务代码的实现
22 }
View Code

Service层

 1 package cn.lonecloud.pagekageauto.service;
 2 /**
 3  * service接口
 4  * @Title: UserService.java
 5  * @Package cn.lonecloud.pagekageauto.service
 6  * @Description: 
 7  * @author lonecloud
 8  * @date 2016年8月7日 上午11:50:20
 9  */
10 public interface UserService {
11     public void Usersave();
12 }
View Code

service实现类

 1 package cn.lonecloud.pagekageauto.service.Impl;
 2 
 3 import org.springframework.beans.factory.annotation.Autowired;
 4 import org.springframework.stereotype.Service;
 5 
 6 import cn.lonecloud.pagekageauto.dao.UserDao;
 7 import cn.lonecloud.pagekageauto.service.UserService;
 8 
 9 /**
10  * service的实现类    
11  * @Title: UserServiceImpl.java
12  * @Package cn.lonecloud.pagekageauto.service.Impl
13  * @Description: 
14  * @author lonecloud
15  * @date 2016年8月7日 上午11:50:36
16  */
17 @Service
18 public class UserServiceImpl implements UserService{
19     //下面进行业务代码的实现
20     @Autowired//自动注入
21     UserDao userDao;
22 
23     @Override
24     public void Usersave() {
25         // TODO Auto-generated method stub
26         System.out.println("service执行保存方法");
27         userDao.save();
28     }
29     
30 }
View Code

dto中间类

 1 package cn.lonecloud.pagekageauto.dto;
 2 
 3 import org.springframework.stereotype.Component;
 4 /**
 5  * 中间类
 6  * @Title: DtoClass.java
 7  * @Package cn.lonecloud.pagekageauto.dto
 8  * @Description: 
 9  * @author lonecloud
10  * @date 2016年8月7日 上午11:51:46
11  */
12 @Component
13 public class DtoClass {
14     public void say(){
15         System.out.println("我是dto");
16     }
17 }
View Code

控制层

 1 package cn.lonecloud.pagekageauto.Controller;
 2 
 3 import org.springframework.beans.factory.annotation.Autowired;
 4 import org.springframework.stereotype.Controller;
 5 
 6 import cn.lonecloud.pagekageauto.dto.DtoClass;
 7 import cn.lonecloud.pagekageauto.service.UserService;
 8 /**
 9  * 控制层类
10  * @Title: UserController.java
11  * @Package cn.lonecloud.pagekageauto.Controller
12  * @Description: 
13  * @author lonecloud
14  * @date 2016年8月7日 上午11:50:56
15  */
16 @Controller
17 public class UserController {
18     
19     @Autowired
20     private UserService userService;
21     @Autowired
22     public DtoClass dtoClass;
23     /**
24      * 保存方法
25      * @Description:
26      */
27     public void save(){
28         System.out.println("控制层save");
29         dtoClass.say();
30         userService.Usersave();
31     }
32 }
View Code

测试类

 1 package cn.lonecloud.test.autoTest;
 2 
 3 import org.junit.Before;
 4 import org.junit.Test;
 5 import org.springframework.context.ApplicationContext;
 6 
 7 import cn.lonecloud.pagekageauto.UserBean;
 8 import cn.lonecloud.pagekageauto.Controller.UserController;
 9 import cn.lonecloud.util.SpringUtil;
10 
11 public class MyTest {
12     ApplicationContext applicationContext = null;
13 
14     @Before
15     public void before() {
16         applicationContext = SpringUtil.getApplicationContext();
17     }
18 
19 //    @Test
20 //    public void Test01() {
21 //
22 //        UserBean userBean = applicationContext.getBean(UserBean.class);
23 //        userBean.setAddress("sca");
24 //        System.out.println(userBean);
25 //        System.out.println(userBean.hashCode());
26 //        UserBean userBean2 = applicationContext.getBean(UserBean.class);
27 //        userBean2.setAddress("cds");
28 //        System.out.println(userBean2.hashCode());
29 //        System.out.println(userBean2);
30 //    }
31     @Test
32     public void controller(){
33         UserController controller = applicationContext.getBean(UserController.class);
34         controller.save();
35     }
36 }
View Code

 

posted @ 2016-08-07 12:02  lonecloud  阅读(13812)  评论(5编辑  收藏  举报
我的博客即将同步至 OSCHINA 社区,这是我的 OSCHINA ID:lonecloud,邀请大家一同入驻:https://www.oschina.net/sharing-plan/apply