Spring注解

目录

一、Java注解概述

@SpringBootApplication

@Component、@Service、@Controller、@Repository

@ResponseBody

@RestController

@AutoWired、@Qualifier、@Resource

@RequestMapping、@GetMapping、@PostMapping

@Value、@ConfigurationProperties、@PropertySource 

@ConfigurationProperties

@Configuration、@Bean 

@RequestParam、@RequestBody、@PathVariable、@RequestHeader、@CookieValue


一、Java注解概述

注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。

二、常用注解:

@SpringBootApplication

:包含@Configuration、@EnableAutoConfiguration、@ComponentScan通常用在主类上;

       被该注解表示的类表明它是一个配置文件。

 @ComponentScan    用来自动扫描被这些注解标识的类,最终生成ioc容器里的bean,默认扫描范围是@ComponentScan注解所在配置类包及子包的类。组件扫描,扫描配置类所在的包以及子包下的bean
@SpringBootConfiguration    与@Configuration作用相同,都是用来声明当前类是一个配置类,这里表明是springboot主类使用的配置类。声明为配置类。
@EnableAutoConfiguration    是springboot实现自动化配置的核心注解,通过这个注解把spring应用所需的bean注入容器中。自动配置,将bean注入到spring容器当中。
 

@Component、@Service、@Controller、@Repository

这几个注解功能基本一样的,都是将类(bean)注入到spring容器中,只不过它们使用的场景不同,被@Component,@Service,@Controller,@Repository注解标注的类,这些类会被纳入进spring容器中管理。这四个注解加到bean上可以使得bean能被自动扫描到。

@Repository持久层(dao)注入spring容器
@Service业务逻辑层(server)注入spring容器
@Controller控制层(controller)注入spring容器
@Component普通pojo注入spring容器

@ResponseBody


@ResponseBody可以作用在方法上或类上,表示该方法的返回结果直接写入 HTTP response body 中,而不会被解析为跳转路径,即不会经过视图解析器,返回什么数据即在页面输入什么数据。

注解说明
@ResponseBody@ResponseBody的作用其实是将java对象转为json格式的数据

例:

@RestController


该注解是@Controller和@ResponseBody的结合体,一般用于类,作用等于在类上面添加了@ResponseBody和@Controller

@AutoWired(wired:联网的)、@Qualifier、@Resource


这3个注解都是基于注解方式进行自动装配,在容器里面将查找到的bean返回,一般@AutoWired用得最多,@Qualifier则需要配合@AutoWired使用,@Resource则是可以通过名字进行自动装配

@AutoWired    @Autowired默认按类型装配,如果发现找到多个bean,则按照name方式比对,如果还有多个,则报出异常。@AutoWired注解可以向bean中注入类(不需要类实例化一个对象了)

@AutoWired可以用于成员变量、set方法和构造器前面。

@AutoWired   例:
@Qualifier    spring的注解,按名字注入 一般当出现两个及以上bean时,不知道要注入哪个,结合@AutoWired使用。用于声明Bean的名称,可以引用Bean的自定义和默认名称。
当有一个接口的多个实现类时,只用@AutoWired会报错,因为它有多个接口的实现类,不知道你要找哪一个,这个时候就需要在注入bean的时候起个名字,然后用@Qualifier注解指定哪一个bean(按照名字注入与装配)

例:


@Resource    默认按名称注入例如@Resource(name = “zhaozhao”)则根据name属性注入找不到则报错,若无name属性则根据属性名称注入,如果匹配不成功则按照类型匹配匹配不成功则报错。该注解的使用相当于@AutoWired和@Qualifier配合使用的效果

例:

 @RequestMapping、@GetMapping、@PostMapping

这3个注解功能也是类似的,通过这3个注解来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,用在方法上,可以通过配置的url进行访问

 @RequestMapping    @RequestMapping(url),通过该注解就可以通过配置的url进行访问,方式可以是get或post请求,两种方式均可


@GetMapping    @GetMapping(url) ,功能类似的,只是这个限定了只能是Get请求


@PostMapping    @PostMapping(url),功能类似的,只是这个限定了只能是Post请求

 

 @Value、@ConfigurationProperties、@PropertySource 


@Value    用于获取bean的属性,一般用于读取配置文件的数据,作用在变量
@ConfigurationProperties(配置属性)    用于注入Bean属性,然后再通过当前Bean获取注入值,作用在
@PropertySource    用于指定要读取的配置文件,可以和@Value或@ConfigurationProperties配合使用。注意:@PropertySource不支持yml文件读取。

@Value
这里用yml配置文件进行演示,propres配置文件也是同样的效果,在application.yml配置文件里设置开发环境的的配置文件(dev),这样用@Value获取到的就是开发环境的配置文件的数据,切换成生产环境(pro)则获取到的是生产环境的数据

@ConfigurationProperties


该注解可以直接注入整个类的数据,作用于类

配置文件如下,这里使用pro环境

 

 测试:

@Configuration、@Bean 

@Configuration作用于类上面,表明这是一个配置类,@Bean产生一个Bean对象加入Spring IOC容器。@Bean可以用于装配任意Bean

注意:@Configuration标注在类上,相当于把该类作为spring的xml配置文件中,作用为:配置spring容器(应用上下文)

新建配置类,将User加入容器,并自定义生命周期

 测试:

@RequestParam、@RequestBody、@PathVariable、@RequestHeader、@CookieValue

这3个注解放在一起主要是经常在控制层用来接收参数的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值