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";
}