声明Bean的注解
-
@Component 没有明确角色的组件。泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
-
@Service 在业务逻辑层(Service层)使用
-
@Repositpry 在数据访问层(dao层)使用,标注一个DAO组件类。这个注解修饰的DAO或者repositories类会被ComponetScan发现并配置,同时也不需要为它们提供XML配置项。
-
@Controller 用于标注控制层组件。用于定义控制器类,在spring项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层),一般这个注解在类中,通常方法需要配合注解@RequestMapping。
-
@RestController 用于标注控制层组件(如struts中的action),@ResponseBody和@Controller的合集。
装配bean时常用的注解
-
@Autowired:自动导入依赖的bean
-
@Resource(name=”name”,type=”type”):没有括号内内容的话,默认byName。与@Autowired干类似的事。
-
@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作
spring MVC模块注解 -- web模块常用到的注解
-
@Controller
定义控制器,它还允许自动检测定义在类路径下的组件(配置文件中配置扫描路径)并自动注册。
-
@RequestMapping
用于将url映射到整个处理类或者特定的处理请求的方法。可以只用通配符!
@RequestMapping 既可以作用在类级别,也可以作用在方法级别。当它定义在类级别时
-
@RequestParam
将请求的参数绑定到方法中的参数上,有required参数,默认情况下,required=true,也就是改参数必须要传。如果改参数可以传可不传,可以配置required=false。
@RequestMapping("/happy")
public String sayHappy(
@RequestParam(value = "name", required = false) String name,
@RequestParam(value = "age", required = true) String age) {
//age参数必须传 ,name可传可不传
...
}
- @PathVariable
- 该注解用于方法修饰方法参数,会将修饰的方法参数变为可供使用的uri变量(可用于动态绑定)。
- @PathVariable中的参数可以是任意的简单类型,如int, long, Date等等。Spring会自动将其转换成合适的类型或者抛出 TypeMismatchException异常。当然,我们也可以注册支持额外的数据类型。
- @PathVariable支持使用正则表达式,这就决定了它的超强大属性,它能在路径模板中使用占位符,可以设定特定的前缀匹配,后缀匹配等自定义格式。
@RequestMapping(value="/happy/{dayid}",method=RequestMethod.GET)
public String findPet(@PathVariable String dayid, Model mode) {
//使用@PathVariable注解绑定 {dayid} 到String dayid
}
- @RequestBody
- @RequestBody是指方法参数应该被绑定到HTTP请求Body上。
@RequestMapping(value = "/something", method = RequestMethod.PUT)
public void handle(@RequestBody String body,@RequestBody User user){
//可以绑定自定义的对象类型
}
- @ResponseBody
- @ResponseBody与@RequestBody类似,它的作用是将返回类型直接输入到HTTP response body中。
- @ResponseBody在输出JSON格式的数据时,会经常用到。
@RequestMapping(value = "/happy", method =RequestMethod.POST)
@ResponseBody
public String helloWorld() {
return "Hello World";//返回String类型
}
- @RestController
- 控制器实现了REST的API,只为服务于JSON,XML或其它自定义的类型内容,@RestController用来创建REST类型的控制器,与@Controller类型。
- 它避免了你重复的写@RequestMapping与@ResponseBody。
- @ModelAttribute
- @ModelAttribute可以作用在方法或方法参数上,当它作用在方法上时,标明该方法的目的是添加一个或多个模型属性(model attributes)。
- 该方法支持与@RequestMapping一样的参数类型,但并不能直接映射成请求。控制器中的@ModelAttribute方法会在@RequestMapping方法调用之前而调用。