Spring和Springboot常⽤的注解
spring常⽤注解:
@Controller:标注⼀个控制器组件类
@Service:标注⼀个业务层0组件类
@Repository:标注⼀个DAO组件类
@Component:标注⼀个普通的spring Bean类
注:@Component、@Repository、@Service、@Controller实质上属于同⼀类注解,⽤法相同,功能相同,区别在于标识组件的类型
@Configuration:把⼀个类作为⼀个IoC容器,它的某个⽅法头上如果注册了@Bean,就会作为这个Spring容器中的Bean
@Autowired:⽤于为类的属性、构造器、⽅法进⾏注值,默认情况下,其依赖的对象必须存在(bean可⽤),如果需要改变这种默认⽅式,可以设置其required属性为false。默认按类型装配,如果我们想使⽤按名称装配,可以结合@Qualifier注解⼀起使⽤。如:
@Autowired@Qualifier("BeanName") ,存在多个实例时使⽤
@Resource:它并不属于spring的注解,⽽是来⾃于JSR-250。其默认情况下按照bean的名称进⾏注⼊,当找不到匹配项时会按照类型装配。当按照名称进⾏装配时,可以指定其name属性,倘若没有指定,注解标注在哪个字段上,其默认名称就是那个字段的名称
@PostConstruct :在构造⽅法和init⽅法(如果有的话)之间得到调⽤,且只会执⾏⼀次。
@PreDestory :注解的⽅法在destory()⽅法调⽤后得到执⾏
@RequestMapping:是⼀个⽤来处理请求地址映射的注解,可⽤于类或⽅法上。⽤于类上,表⽰类中的所有响应请求的⽅法都是以该地址作为⽗路径
@RequestParam:⽤于绑定request请求参数到指定的⽅法
@PathVariable:⽤于⽅法修饰⽅法参数,会将修饰的⽅法参数变为可供使⽤的uri变量(可⽤于动态绑定)
@Transactional:在处理dao层或service层的事务操作时,譬如删除失败时的回滚操作,可⽤到@Transactional注解
@Aspect:标明该类为切⾯类,并启⽤AspectJ注解,注:在使⽤时要同@Component⼀起使⽤,否则不会被扫描到加⼊容器
@Pointcut:定义切⼊点
@Before:定义前置通知,在⽬标⽅法执⾏前执⾏
@After:定义后置通知,在⽬标⽅法执⾏后执⾏,不论是⽬标⽅法执⾏正常后退出,还是抛出异常后退出,均会被执⾏
@Around:定义环绕通知,在⽬标⽅法执⾏前后嵌⼊相关业务逻辑.
@AfterReturning:⽬标⽅法执⾏正常退出后执⾏
@AfterThrowing:⽬标⽅法执⾏抛出异常后执⾏
注:@Aspect、@Pointcut、@Before、@Around、@After、@AfterReturning、@AfterThrowing属于spring aop模块
@Value:从properties⽂件中的取值赋给修饰的字段
@Primary:⾃动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为⾸选者,否则将抛出异常
@Lazy:⽤于注解类,延迟初始化。
@Named:和@Component功能相同。@Named可以有值,如果没有值⽣成的Bean名称默认和类名相同
@RequestHeader,@CookieValue:处理request header部分的注解
@RequestParam:作⽤是提取和解析请求中的参数。@RequestParam⽀持类型转换,类型转换⽬前⽀持所有的基本Java
@RequestBody:有个默认属性required,默认是true,当body⾥没内容时抛异常
@SessionAttributes:即将值放到session作⽤域中,写在class上⾯。
@ModelAttribute:该Controller的所有⽅法在调⽤前,先执⾏此@ModelAttribute⽅法,可⽤于注解和⽅法参数中,可以把这个
@ModelAttribute特性,应⽤在BaseController当中,所有的Controller继承BaseController,即可实现在调⽤Controller时,先执⾏
@ModelAttribute⽅法
@ResponseBody: 该注解⽤于将Controller的⽅法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写⼊到Response对象的body数据区。使⽤时机:返回的数据不是html标签的页⾯,⽽是其他某种格式的数据时(如json、xml等)使⽤
@Scope:配置bean的作⽤域,默认是单例模式,即@Scope("singleton").
注: singleton:单例,即容器⾥只有⼀个实例对象。
prototype:多对象,每⼀次请求都会产⽣⼀个新的bean实例,Spring不⽆法对⼀个prototype bean的整个⽣命周期负责,容器在初始化、配置、装饰或者是装配完⼀个prototype实例后,将它交给客户端,由程序员负责销毁该对象,不管何种作⽤域,容器都会调⽤所有对象的初始化⽣命周期回调⽅法,⽽对prototype⽽⾔,任何配置好的析构⽣命周期回调⽅法都将不会被调⽤
request:对每⼀次HTTP请求都会产⽣⼀个新的bean,同时该bean仅在当前HTTP request内有效
@RestController:@Controller + @ResponseBody。是2个注解的合并效果,即指定了该controller是组件,⼜指定⽅法返回的是String或json类型数据。
@ResponseStatus:⽤于修饰⼀个类或者⼀个⽅法,修饰⼀个类的时候,⼀般修饰的是⼀个异常类,当处理器的⽅法被调⽤
时,@ResponseStatus指定的code和reason会被返回给前端。value属性是http状态码,⽐如404,500等。reason是错误信息
@ControllerAdvice:该注解作⽤对象为TYPE,包括类、接⼝和枚举等,在运⾏时有效,并且可以通过Spring扫描为bean组件。其可以包含由@ExceptionHandler、@InitBinder 和@ModelAttribute标注的⽅法,可以处理多个Controller类,这样所有控制器的异常可以在⼀个地⽅进⾏处理。
@ExceptionHandler:当⼀个Controller中有⽅法加了@ExceptionHandler之后,这个Controller其他⽅法中没有捕获的异常就会以参数的形式传⼊加了@ExceptionHandler注解的那个⽅法中
注:如果单使⽤@ExceptionHandler,只能在当前Controller中处理异常。但当配合@ControllerAdvice⼀起使⽤的时候,就可以摆脱那个限制,对所有controller层异常进⾏处理。
SpringBoot
spring在注解在springboot中也可以使⽤,不过springboot⼜新添了⼀些注解
@SpringBootApplication:Springboot项⽬的⼊⼝类,启动类。
从源码中发现@SpringBootApplication源码中包含⼀下三个注解:
@SpringBootConfiguration:作⽤与@Configuration作⽤相同,都是⽤来声明当前类是⼀个配置类.可以通过@Bean注解⽣成IOC容器管理的bean.
@EnableAutoConfiguration:是springboot实现⾃动化配置的核⼼注解,通过这个注解把spring应⽤所需的bean注⼊容器中
@ComponentScan:动态确定⾃动扫描范围,类型已经不扫描的类型.默认情况下:它扫描所有类型,并且扫描范围是
@ComponentScan注解所在配置类包及⼦包的类
@GetMapping: 等同于 @RequestMapping(method = RequestMethod.GET)
@PostMapping :等同于 @RequestMapping(method = RequestMethod.POST)
@PutMapping :等同于 @RequestMapping(method = RequestMethod.PUT)
@DeleteMapping: 等同于 @RequestMapping(method = RequestMethod.DELETE)
@PatchMapping :等同于 @RequestMapping(method = RequestMethod.PATCH)
@RunWith(SpringRunner.class) :RunWith就是⼀个运⾏器,@RunWith(JUnit4.class)就是指⽤JUnit4来运
⾏,@RunWith(SpringJUnit4ClassRunner.class),让测试运⾏于Spring测试环境,@RunWith(Suite.class)的话就是⼀套测试集合,
@SptingBootTest:是springboot ⽤于测试的注解,可指定启动类或者测试环境等
标签:sir,多测师,Spring,bean,默认,Bean,Controller,注解,杭州 From: https://www.cnblogs.com/xiaoshubass/p/16925555.html