关于annotation的认识

一·介绍

注解(Annotations)是一种元数据,提供了程序之外的一些程序信息。注解并不会直接影响被注解的代码。注解有很多用法:
1. 为编译器提供信息(Information for the compiler) ——编译器能直接使用注解检查错误(detect errors)和禁止警告(suppress warnings)。
2. 编译期和部署时处理(Compile-time and deployment-time processing) —— 软件工具可以使用注解生成代码,XML文件等待。
3. 运行期处理(Runtime processing) —— 一些注解可以在运行期被检测。

注解是一种特殊种类的元数据,它能够关联Java语言中不同元素和结构。有意思的是,在Java生态系统中大多数使用样板XML描述符的地方,注解在消除这些XML描述符上做出了很大的贡献。注解引入了新的,类型安全以及非常强健的配置和个性化技术。注解本身对它所注解的元素不会造成任何直接的影响。但是,依靠注解和它的定义方式,它们可以被Java编译器(注解最好的实例就是我们前面的文章中所使用的@Override注解)、注解处理器和运行时代码使用反射和其他的虚拟机内省技术使用。

二·举例

1> @named和inject

package com.javabeat.injectandnamedannotations;
  import javax.inject.Inject;
  import javax.inject.Named;
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.stereotype.Service;
  @Named
  public class ProductService {
      @Inject
      private ProductDao productDao;
      public Product getProductDetail(String productId) {
          Product product = productDao.getProduct(productId);
          return product;
      }
  }
2>@requestscope
 
@Component
@Scope(value = WebApplicationContext.SCOPE_REQUEST,proxyMode= ScopedProxyMode.INTERFACES)
public class RequestBean implements IRequestBean {
    private UUID uuid;
    public RequestBean() {
        uuid = UUID.randomUUID();
    }
    public void printId() {
        System.out.println("RequestBean:" + uuid);
    }
3>@model
@Controller
public class HelloWorldController {
    @ModelAttribute("attributeName")
    public String addAccount(@RequestParam String abc) {
        return abc;
      }
    @RequestMapping(value = "/helloWorld")
    public String helloWorld() {
        return "helloWorld";
          }
   }
posted @ 2019-03-17 17:25  身材皇帝hamac  阅读(172)  评论(0)    收藏  举报