spring里面的注解

2018/09/21 框架

spring里面的注解

1、spring中的注解

​ XML 或注解配置方式,都是表达 Bean 定义的载体,其实质都是为 Spring 容器提供 Bean 定义的信息 。 基于注解的配置方式,从 Spring2.0 开始引入, Spring2.5 完善, Spring4.0 得到了进一步的增强 。使用注解有以下的优势:

  1. 采用纯java代码,不在需要配置繁杂的xml文件
  2. 在配置中也可享受面向对象带来的好处
  3. 类型安全对重构可以提供良好的支持
  4. 减少复杂配置文件的同时亦能享受到springIoC容器提供的功能

2、spring中有哪些注解

2.1、@Autowired

@Autowired 是在spring2.5引入的,标记了成员变量,方法或者构造函数,完成自动装配。注意,@Autowired是根据类型完成的自动装配。

2.2、@Resource

@Resource 默认按照 bean的name的进行查找,如果没有找到会按照type进行查找。

注意:在没有为 @Resource 注解显式指定 name 属性的前提下,如果将其标注在BeanFactory类型、ApplicationContext类型、ResourceLoader类型、ApplicationEventPublisher类型、MessageSource 类型上,那么 Spring 会自动注入这些实现类的实例,不需要额外的操作。此时 name 属性不需要指定 ( 或者指定为””),否则注入失败;

2.3、@Component

​ 把普通的pojo类交给spring管理,类似于配置文件中的<bean id="" class="/">

2.4、@Respository @Service @Controller

@Repository@Service@Controller则是 @Component的细化, 用来表示更具体的用例(例如,分别对应了持久化层、服务层和表现层)。 也就是说, 你能用 @Component来注解你的组件类,但如果用 @Repository@Service@Controller来注解它们,你的类也许能更好地被工具处理,或与切面进行关联。

2.5、@Qualifier

​ 使用 @Autowired时,如果找到多个同一类型的bean,则会抛异常,此时可以使用 @Qualifier(“beanName”),明确指定bean的名称进行注入,此时与 @Resource指定name属性作用相同。

2.6、@Controller

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

2.7、@RestController

​ @RestController注解相当于@ResponseBody + @Controller合在一起的作用,返回的内容就是return返回的信息。

2.8、@RequestBody

作用:

  1. 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上;
  2. 再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。

2.9、@ResponseBody

​ 该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。

2.10、@requestMapping

​ 包为:org.springframework.web.bind.annotation,是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

  1. @GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。

  2. @PostMapping是一个组合注解,是@RequestMapping(method = RequestMethod.POST)的缩写。

类似的还有 @DeleteMapping 等等

2.11、@Cacheable

用来标记缓存查询。可用用于方法或者类中,当标记在一个方法上时表示该方法是支持缓存的,当标记在一个类上时则表示该类所有的方法都是支持缓存的。

2.12、@PostConstruct

用来标记是在项目启动的时候执行这个方法。用来修饰一个非静态的void()方法,也就是spring容器启动时就执行,多用于一些全局配置、数据字典之类的加载,被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init()方法之前执行。PreDestroy()方法在destroy()方法执行执行之后执行。

2.13、@Sync

​ 这个注解用于标注某个方法或某个类里面的所有方法都是需要异步处理的。被注解的方法被调用的时候,会在新线程中执行,而调用它的方法会在原来的线程中执行。这样可以避免阻塞、以及保证任务的实时性。适用于处理log、发送邮件、短信……等。

2.14、@SpringbootApplication

​ 申明让spring boot自动给程序进行必要的配置,等于@Configuration ,@EnableAutoConfiguration 和 @ComponentScan 三个配置。

2.15、@Import

​ 用来导入其他配置类。

2.16、@Bean

​ 用@Bean标注方法等价于XML中配置的bean,放在方法上,返回的对象交给spring容器管理。

2.17、@ControllerAdvice

​ 全局异常处理,包含了@Component,统一来处理异常。

2.18、@ExceptionHandler(Exception.class)

​ 用在方法上面表示遇到这个异常就执行以下方法。

2.19、@Configuration

​ 等同于spring的XML配置文件;使用Java代码可以检查类型安全。

2.20、@EnableAutoConfiguration

​ 自动配置。

2.21、@PathVariable

​ 获取参数。

2.22、@Value

​ 获取spring配置文件中的值。

Search

    欢迎添加我的个人微信号

    个人微信哦

    Table of Contents