spring 注解

@Controller : 标注当前对象为控制器

@RequestMapping : 标注映射规则,匹配服务请求(除值映射外还可以通配符“*”映射)

@ResponseBody : 标注当前方法返回内容为消息体

@RestController: 标注当前对象为以响应数据体形式返回的控制器(@Controller+@ResponseBody)


@Param : 将请求参数区数据映射到方法区参数下

@RequestParam : 将请求参数区数据映射到方法区参数下

@PathVariable: 将url中的参数解析到对应的方法参数上,


@CookieValue : 绑定 cookie 的值到 Controller 方法参数

用法: public void test(@CookieValue("a") String a){}

@RequestHeader : 绑定 HttpServletRequest 头信息 到 Controller 方法参数

用法:  public void test(@RequestHeader("host") String host){}


@ModelAttribute : 

用法1:  public void test(@ModelAttribute("host") String host){}

作用 : 获取模型中的 host 的值

用法2: 

@ModelAttribute("hello")

public void test(){}

作用:该方法将在处理器方法执行之前执行,然后把返回的对象存放在 session 或模型属性中,属性名称可以使用 @ModelAttribute(“attributeName”) 在标记方法的时候指定,若未指定,则使用返回类型的类名称(首字母小写)作为属性名称。

@SessionAttribute : 

区别: 两者都支持在不同的模型和控制器之间共享数据,但是@ModelAttribute的参数存储在模型之中,而@SessionAttribute则存储在Session中:实例如下:

@Controller
@RequestMapping("/myTest")
@SessionAttributes(value = {"intValue", "stringValue"}, types = {UserDO.class})
public class MyController {


    @ModelAttribute("hello")
    public String getModel() {
        System.out.println("-------------Hello---------");
        return "world";
    }

    @ModelAttribute("intValue")
    public int getInteger() {
        System.out.println("-------------intValue---------------");
        return 10;
    }

    @ModelAttribute("user2")
    public UserDO getUser() {
        System.out.println("---------getUser-------------");
        return new UserDO(3, "user2");
    }

    @RequestMapping("sayHello")
    public void sayHello(Map<String, Object> map,
                         @ModelAttribute("hello") String hello,
                         @ModelAttribute("intValue") int num,
                         @ModelAttribute("user2") UserDO user, 
                         Writer writer, HttpServletRequest request) throws IOException {
        map.put("stringValue", "String");
        writer.write("Hello " + hello + " , Hello " + user.getName() + num);
        writer.write("\r");
        HttpSession session = request.getSession();
        Enumeration enume = session.getAttributeNames();
        while (enume.hasMoreElements())
            writer.write(enume.nextElement() + "\r"); // hello world,hello user210
        System.out.print(" " + session); // user2 intvalue stringValue(第一次无输出,只是将对象值存入Session中)    }}
    }
}


@Service : 标注当前类为业务层组件

@Respository : 标注当前类为数据访问组件(DAO)

@Component(不推荐) : 泛指组件,当组件不好归类的时候,用这个注解进行标注


@Autowired : (spring)用来装配Bean,可用于字段或者setter方法上。按照类型装配,默认情况对象必须存在,如果为空,设置Requied=false

@Resource(推荐) : (J2EE)用来装配Bean,可用于字段或者setter方法上。默认按照名称装配,找不到时才会按照类型装配,可以使用name属性指定。

@Qualifier : 配合@Autowired使用,改成按照名称匹配,可以避免使用一个具有多个同类或者不存在bean类时抛出的异常。



@PostContruct : 在方法上加上注解,会在bean初始化之后被spring容器执行。应用场景:当需要往bean注入一个父类的属性却无法复写时使用


@Scope : 定义一个bean的作用范围。示例:

@Scope("session")

public class UserSession{}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值