您的位置:首页 > 编程语言 > Java开发

spring和springmvc常用注解

2017-12-01 21:35 323 查看
1. spring中常用注解  

这些注解是用来向spring容器中注册bean。使用这种注解方式注册组件,要在spring的配置文件中配置扫描器。
<context:component-scan base-package="包路径"></context:component-scan>   指定一个包
<context:component-scan base-package="包路径,包路径,包路径"></context:component-scan>指定多个包,中间用逗号隔开即可。

注意:这里的注册指的是将组件交给spring容器管理。
@Controller      用于注册控制层组件(如Struts中的Action和springMVC中的Controller)
@Service          用于注册业务层组件(Service)
@Repository     用于注册数据访问层组件(Dao)
@Component   泛指组件,也就是说上面三种组件都可以用这个注解,但是推荐使用上面的三个注解去注解对应的组件,因为它们有语义化的作用(一看就知道这个组件是干什么的)。这也是spring为什么还出了这三个注释的原因。

  上述注解如果不指定value,即表示注册到spring容器中的该类的bean名称为这个类的类名首字母小写形式。也可以指定bean名称:注解(value="bean名")/注解("bean名")

 

  @Scope("prototype")     该注解一般用于struts2中的action上,表示当前aciton是单例的。当然这些配置也可以在xml中进行配置的。

   

   用于bean注入的注解:@Resource和@Autowired 他们都可以用于注入bean

   不同之处:

       @Autowired注解是byType按类型装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值则要设置required属性为false:@Autowired(required=false)

       @Resource注解默认是byName按名称装配依赖对象,但是@Resource有两个重要的属性:name和type

           使用name时是按bean名称注入:@Resource(name="contentCategoryService")

           使用type时是按bean类型注入:@Resource(type=ContentCategoryService.class)

           都不指定则通过反射使用byName形式注入。

   

2.springmvc常用注解

    @RequestMapping     该注解用于处理请求地址映射。 作用类似struts.xml中配置的action配置。如果使用于类上则表示该类中的所有方法的请求地址都要以该地址为父路径。一般如果方法中的请求路径过长可以在类上先配置一个父路径以窄化方法上的路径。

    属性:

        value:指定请求地址        @RequestMapping("/demo") 

        method:指定请求的类型有get,post等等        @RequestMapping(value="/delete",method=RequestMethod.POST)

        produces:指定返回内容的类型        @RequestMapping(value="/list",produces=MediaType.APPLICATION_JSON_VALUE+";charset=utf-8")  返回json类型编码格式为utf-8

              *有时候返回到前台的内容乱码,可能是内容类型不符合。可以利用这个属性进行设置。

    .

    @ResponseBody    该注解作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据。

    需要注意的是在使用此注解之后不会再走试图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。我一般都是用于将pojo对象转换成json格式数据返回到前台。

    

    @RequestParam    用于绑定参数

         当前端提交的参数和Controller中用于接收参数的形参名不一样时,使用该注解来绑定形参。

         public void upLoad(@RequestParam("file") CommonsMultipartFile fileUpLoad) {};  表单提交的参数名为file,接收的形参名为fileUpload这时就可以使用该注解了。        

    

    @PathVariable      作用:从路径中取参数

        使用方法:

        如果是从路径中取参数要使用@PathVariable 

        @RequestMapping("/sync/content/{cid}")

        @ResponseBody
     public TaotaoResult sysnConten(@PathVariable Long cid) {
     }
     例如:http://114.67.151.212/rest/sync/content/12,这就是所谓从路径中获取参数,这样就能将12获取到cid中。
     如果不使用@PathVariable和{cid}这样那么url应该是:http://114.67.151.212/rest/sync/content/cid=12  这就是它们直接的区别。
   
   @SessionAttributes    将值翻入session作用域中,写在class上    @SessionAttributes(value={"user"},types={String.cla
9d09
ss})
   @SessionAttributes不仅仅可以通过属性名指定需要放到会话中的属性外(value 属性值),还可以通过模型属性的对象类型指定哪些模型属性需要放到会话中(types 属性值)

实例:

@SessionAttributes(value={"names"},types={Integer.class})

@Controller

@RequestMapping("/test")

public class TestController {

@RequestMapping("/session2")

    public String sessionTest2(Map<String, Object> map) {
map.put("names", Arrays.asList("str1","str2","str3"));//按名称
map.put("age", 22);//按类型
return "success";
}

}

jsp页面:

session中names: ${sessionScope.names }<br/>

session中age: ${sessionScope.age }<br/>

----------------------------------------------------
   
   
   
   
   
   
   
   
   
   
   
   
   
    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: