spring常用注解详解

spring3.0中,使用注解要先在xml中配置组件自动扫描

<!--自动扫描通过注解配置的组件 --> 
<context:component-scan base-package="cn.com.*"/>  

1.@Controller
@Controller对应表现层的Bean,比如Action,如:

    @Controller  
    @Scope("prototype")  
    public class PersonController {  

    }  

使用@Controller注解标识PersonController 之后,就表示要把UserController交给Spring容器管理,在Spring容器中会存在一个名字为”UserController”的action,这个名字是根据PersonController 类名来取的。注意:如果@Controller不指定其value【@Controller】,则默认的bean名字为这个类的类名首字母小写, 如果指定value【@Controller(value=”PersonController “)】或者【@Controller(“PersonController”)】,则使用value作为bean的名字。
这里的PersonController 还使用了@Scope注解,@Scope(“prototype”)表示将Action的范围声明为原型,可以利用容器的scope=”prototype”来保证每一个请求有一个单独的Action来处理,避免struts中Action的线程安全问题。spring 默认scope是单例模式(scope=”singleton”),这样只会创建一个Action对象,每次访问都是同一Action对象,数据不安全,struts2 是要求每次次访问都对应不同的Action,scope=”prototype” 可以保证当有请求的时候都创建一个Action对象。
2.@RequestMapping
@RequestMapping是一种通过匹配URL路径来访问相应页面的,@RequestMapping 注解将类似 “/user”这样的URL映射到整个类或特定的处理方法上。一般来说,类级别的注解映射特定的请求路径到表单控制器上,而方法级别的注解只是映射为一个特定的HTTP方法请求(“GET”,“POST”等)或HTTP请求参数。

@Controller  
@RequestMapping("/user")  
public class UserController {  
@RequestMapping(value = "/list", method = {RequestMethod.GET,RequestMethod.POST})  
public String list(HttpServletRequest request) {  

}  
}

3.@Autowired

将 @Autowired 注释标注在成员变量上 ,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。
@Autowired 根据bean 类型从spring 上线文中进行查找,注册类型必须唯一,否则报异常。与@Resource 的区别在于,@Resource 允许通过bean 名称或bean 类型两种方式进行查找@Autowired(required=false) 表示,如果spring 上下文中没有找到该类型的bean 时, 才会使用new SoftPMServiceImpl(); @Autowired 标注作用于 Map 类型时,如果 Map 的 key 为 String 类型,则 Spring 会将容器中所有类型符合 Map 的 value 对应的类型的 Bean 增加进来,用 Bean 的 id 或 name 作为 Map 的 key。 @Autowired 还有一个作用就是,如果将其标注在 BeanFactory 类型、ApplicationContext 类型、ResourceLoader 类型、ApplicationEventPublisher 类型、MessageSource 类型上,那么 Spring 会自动注入这些实现类的实例,不需要额外的操作。

    @Controller  
    @RequestMapping("/user")  
    public class UserController {  
        @Autowired  
        private UserBiz userBiz;  
    }  

4.@RequestParam
@RequestParam将请求的参数绑定到方法中的参数上。其实,即使不配置该参数,注解也会默认使用该参数。如果想自定义指定参数的话,如果将@RequestParam的 required 属性设置为false(如@RequestParam(value=”id”,required=false))。
5.@RequestBody
@RequestBody是指方法参数应该被绑定到HTTP请求Body上

@RequestMapping(value = "/user",method = RequestMethod.GET)  
public void UserInfo(@RequestBody String userId,User user){  

} 

6.@ResponseBody
@ResponseBody与@RequestBody类似,它的作用是将返回类型直接输入到HTTP response body中。最常用的我们使用ajax传输json,需要再类上面配置@ResponseBody。

    @ResponseBody  
    @RequestMapping(value = "/user", method = RequestMethod.POST)  
    public String list() {      
        return "Hello World";  
    }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值