• 【java学习】Annotation-Driven(注解驱动编程)-spring常用注解


    Spring Framework2.5引入了Annotation,之后又完善了相关功能。

    1,Spring模式注解

    Spring注解场景说明备注
    @Repository数据仓储模式数据访问组件,即DAO组件
    @Component通用组件模式当组件不好归类的时候,我们可以使用这个注解进行标注。
    @Service服务模式业务层组件
    @ControllerWeb控制器模式控制层组件,详情见下文
    @RestController控制层组件包含@Controller、@ResponseBody
    @Configuration配置类模式
    @ImportResource替换XML元素
    @Import限定@Autowired依赖注入范围
    @ComponentScan扫描指定package下标注Spring模式注解的类

    1)@SpringBootApplication

    用于激活@Configuration、@EnableAutoConfiguration、@ComponentScan三个注解的特性。

    @Configuration: Spring Boot的配置类
    @EnableAutoConfiguration: 开启自动配置类,激活spring的自动装配机制。
    @ComponentScan:激活@Component扫描。
    
    • 1
    • 2
    • 3

    组件自动扫描机制
    Spring2.5为我们引入了组件自动扫描机制,它可以在类路径下寻找标记了@Component、@Service、@Controller、@Repository注解的类,并把这些类纳入到spring容器中管理,它的作用和在xml中使用bean节点配置组件一样。

    通常用在主类上。

    @SpringBootApplication
    @MapperScan("com.qianxin.service.dao.*")
    @EnableScheduling  //@EnableScheduling 注解的作用是发现注解@Scheduled的任务并后台执行
    public class ServiceApplication {
        public static void main(String[] args) {
            SpringApplication.run(ServiceApplication.class, args);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2,依赖注入注解

    Spring注解场景说明备注
    @AutowiredBean依赖注入,只能按类型注入spring提供的注解
    @Qualifier细粒度的@Autowired依赖查找
    Java注解场景说明备注
    @ResourceBean依赖注入,默认按名称注入,也支持按类型注入jdk提供的注解

    3,Bean定义注解

    Spring注解场景说明备注
    @BeanSpring只调用一次产生这个Bean对象的方法,随后Spring将这个Bean对象放在自己的IOC容器中进行管理。这些bean都需要在@Configuration注解下进行创建。具体使用参见。
    @DependsOn指当前bean所依赖的bean。
    @Lazy作用在bean上,表明这个bean延迟加载;作用在方法上,表示这个方法被延迟加载;作用在@Component 注释的类上,表明这个类中所有的bean 都被延迟加载。用于解决循环依赖。
    @Primary指示当多个候选者有资格自动装配依赖项时,应优先考虑bean。用于一个接口有多种实现时,有此注解的类会被优先考虑。

    4,Spring MVC Annotation

    1)@Controller(控制组件)

    用于标记在一个类上,使用它标记的类就是一个springmcv Controller对象,分发处理器将会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping注解。@Controller只是定义了一个控制器类,而使用了@RequestMapping注解的方法才是真正处理请求的处理器。

    2)@RequestMapping

    用于标记在一个方法或类上,用来处理请求地址映射的注解,用于类上,表示类中所有响应请求处理的方法都是以该地址作为父路径,返回值会通过视图解析器解析为实际的物理视图,然后做转发操作。

    属性说明
    value指定请求的实际地址
    method指定请求的method类型
    consumes指定处理请求的内容提交类型(Content-Type),例如application/josn,text/html
    produces指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回
    param指定request中必须包含的参数值
    headers指定request中必须包含某些指定的header值,才能让改方法处理请求

    spring4.3引入:@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping,@RequestMapping是他们的父类注解。

    org.springframework.web.bind.annotation
    
    • 1

    @GetMapping相当于@RequestMapping(method = RequestMethod.GET)
    @PostMapping相当于@RequestMapping(method = RequestMethod.POST)

    同时又引入了三个参数注解:

    1>@PathVaribale

    对应http访问的路径参数。

    @GetMapping(value = "/user/{id}")
    public ResponseMessage getUser(@PathVariable Long id){
    }
    
    • 1
    • 2
    • 3

    2>@RequestParam

    适合参数较少,参数固定的情况。
    对应http访问的query参数。

    属性说明
    value请求参数名(必须配置)
    required是否必需,默认为 true,即 请求中必须包含该参数,如果没有包含,将会抛出异常(可选配置)
    defaultValue默认值,如果设置了该值,required 将自动设为 false,无论你是否配置了required,配置了什么值,都是 false(可选配置)

    3>@RequestBody

    org.springframework.web.bind.annotation
    
    • 1

    适用于复杂的数据结构,比如用xml或者json定义的复杂对象。
    对应的是http request payload,数据在http请求的body上,也就是在HttpServletRequest.getInputStream里面。

    @PostMapping(value = "")
    public ResponseMessage modifyUser(@RequestBody User user){
    }
    
    • 1
    • 2
    • 3
  • 相关阅读:
    Codeforces Round #831 (Div. 1 + Div. 2)
    18、设计模式之解释器模式(Interpreter)
    迁移kubelet、docker和containerd工作目录
    C#的托盘窗体显示与隐藏效果 - 开源研究系列文章
    unity3D之UI
    Tomcat报错总结
    数据结构 - 数组
    整理了一个前端utils工具方法库
    redis系列之——高可用(主从、哨兵)
    DB2 数据库监控用户赋权手册
  • 原文地址:https://blog.csdn.net/SunshineTan/article/details/126259280