spring 常用注解关系(@Component,@Controller,@Service,@Repository,@Autowired,@Resource),@Qualifier
2016-11-09 00:00
1661 查看
@Component
spring会把@Component注解的对象,当成Bean加载。@Component是所有组件的总的注解,现在可以具体成更具体的组件注解 @Controller @Service @Repository,已不推荐使用。@Controlloer & @RequestMapping
标记该注释的类,会拦截指定url,并进行操作。所以通常会配以 @RequestMapping("index")。@Controller @RequestMapping("/index") public String indexController(){ // 业务操作 return "index"; }
上面的例子的含义是,spring会通过@Controller注解找到该组件。当spring收到请求(url为 http://yourhost:8080/index)时,根据@RequestMapping中注册的("index"),使用该组件处理该请求。
@Service & @Resource
标记@Service注解的类,会被spring加载,然后供@Controller组件调用。下述代码调用关系:UserService为定义的接口服务,在被Controller调用时,实际上调用的是UserService的实现UserServiceImpl。
//用@Service注解,标记自己的提供服务时的名字 @Service("userService") public class UserServiceImpl implements UserService { ……… }
//以下代码为controller类中的片段,调用刚才注册的service @Resource(name = "userService") private UserService userService;
上述代码的意思是,在controller中调用userService时,指定用UserServiceImpl来实现userService
@Repository & @Resource
标记@Repository注解的类,会被spring加载,然后供@Service组件调用。// 用@Repository注解,标记自己提供服务时的名字 @Repository(value="userDao") public class UserDaoImpl extends BaseDaoImpl<User> { //业务操作 }
// 用@Resource注解,注入userDao @Resource(name = "userDao") private BaseDao<User> userDao;
#@Autowired
如果组件类(如UserService)和其实现类(如UserServiceImpl)为唯一对应关系,则可以用@Autowired注释简化。
以上述@Service & @Resource 代码为例,由于一个UserService只有一个唯一的实现UserServiceImpl,所以Controller在调用UserService时,完全可以不用@Resouce来指定调用关系,此处用@Autowired,就可以让spring自己找到UserServiceImpl。代码改造如下:
//用@Service注解,不需要提供service的名字 @Service public class UserServiceImpl implements UserService { // 业务代码 }
//以下代码为controller类中的片段,此处直接使用了@Autowired代码,因为UserService只有一个实现类UserServiceImpl,所以spring能够自动找到该实现类,不再需要用@Resource显式指定由谁实现UserService @Autowired private UserService userService;
#@Qualifer
与@Autowired组合使用,效果相当于@Resource,即 @Autowired+@Qualifier = @Resource。
还是上述@Service & @Resource 代码为例,其中第二段代码可以等价于以下代码:
//用@Service注解,标记自己的提供服务时的名字 @Autowired @Qualifier("userService") // @Resource("userService"),此处被替换成了 @Autowired + @Qualifier("userService") public class UserServiceImpl implements UserService { ……… }
参考链接:
1.spring常用注解
2.@Resource & @Qualifier 区别
相关文章推荐
- Spring注解@Component、@Repository、@Service、@Controller @Resource、@Autowired、@Qualifier、@scope
- 终极讲解,看了立马懂 --》Spring注解@Component、@Repository、@Service、@Controller @Resource、@Autowired、@Qualifier 解析
- Spring注解@Component、@Repository、@Service、@Controller @Resource、@Autowired、@Qualifier 解析
- Spring注解@Component、@Repository、@Service、@Controller @Resource、@Autowired、@Qualifier 解析
- Spring注解@Component、@Repository、@Service、@Controller @Resource、@Autowired、@Qualifier 解析
- Spring注解@Component、@Repository、@Service、@Controller @Resource、@Autowired、@Qualifier、@scope
- Spring注解@Component、@Repository、@Service、@Controller @Resource、@Autowired、@Qualifier 解析[转]
- Spring注解@Component、@Repository、@Service、@Controller @Resource、@Autowired、@Qualifier 解析
- Spring注解@Component、@Repository、@Service、@Controller @Resource、@Autowired、@Qualifier 解析
- Spring @Autowired、@Resource、@Required、@Component、@Repository、@Service、@Controller注解的用法和作用
- spring部分注解@Repository,@Service,@Controller,@Component,@scope,@Resource,@Autowired
- Spring注解@AutoWired @Component、@Repository、@Service、@Controller区别
- spring,@autowired,@Resource,@Qualifier, @Component、@Repository、@Service、@Controller
- Spring注解@Component、@Repository、@Service、@Controller @Resource、@Autowired、@Qualifier 解析
- Spring2.5中annotation配置中@Override、@Component、 @Controller、 @Service、 @Repository、@Autowired的解析
- Spring @Resource @Autowired @Component常用注解
- Spring注解@Component、@Repository、@Service、@Controller @Resource、@Autowired、@Qualifier 解析
- spring注解( @Autowired、@Qualifier、@Resource、@PostConstruct、@PreDestroy、 @Component、@Scope)-描述的比较清楚
- Spring注解@Component、@Repository、@Service、@Controller @Resource、@Autowired、@Qualifier 解析
- spring注解( @Autowired、@Qualifier、@Resource、@PostConstruct、@PreDestroy、 @Component、@Scope)-描述的比较清楚