Spring常用注解浅谈
我先列举一些Spring中的常见注解:@Autowired @Resource @Qualifier @Service @Component @Controller @Repository @RequestMapping 等等。
1、@Autowired @Qualifier 与 @Resource
用法:标注在成员变量上,或者set方法上。@Autowired 与 @Resource 都是用于bean自动装配的。(确切的说@Resource是jdk自带的注解);
区别:@Autowired装配默认是通过类型去查找,也可以通过@Qualifier指定名称查找。而@Resource 默认按照名称进行查找,当然也可指定类型、指定名称或者同时指定。指定类型的时候如果找不到或者找到多个都会抛出异常。同时指定类型和名称的时候,会去找唯一匹配的bean,如果找到多个抛出异常。
例:见示例代码一。
示例代码一:
/*
*接口
*/
public interface PersonService{
public void eat();
public void play();
}
/*
*接口实现类
*/
@Service("personService")
public class PersonServiceImpl implements PersonService{
@Override
public void eat(){
System.out.println("eat");
}
@Override
public void play(){
System.out.println("play");
}
}
/*
*调用类
*/
public class Demo{
@Resource
private PersonService personService;
@Autowired
private PersonService personService2;
@Autowired
@Qualifier("personService")
private PersonService personService3;
public void test(){
personService.eat();
personService2.eat();
}
}
2、@Service @Component @Controller @Repository
用法:都是标注在类名上,用于注册一个bean到Spring上下文中。
区别:@Service 用于服务层;@Controller用于控制层;@Repository用于DAO层;不确定的用@Component
例:见示例代码一(同Service的用法)
3、@RequestMapping @RequestParam
用法:@RequestMapping标注在控制层类上面映射一个请求路径;@RequestParam 映射一个请求参数;
例:见示例代码二
示例代码二:
/*
*控制层类
*/
@Controller
@RequestMapping("/register")
public class RegisterUser{
public void register(@RequestParam("ownerId") int ownerId){
//dosomething
}
}