背景:spring的注解是2.5版本中引入的,目的是简化XML配置。在实际开发中使用注解的频率相当高。
1.声明bean的注解
(1)@component组件,没有明确角色;
(2)@service在业务逻辑层(service层)使用;
(3)@respository在数据访问层(dao层)使用
(4)@controller在控制器中使用
特别注意
(1)@Controller和@RestController的区别
@Controller返回的是视图页面,@RestController等于@Controller和@ResponseBody合在一起,返回的是JSON\XML等文本,用了@RestController,意味着这个controller下面所有方法都是返回JSON\XML等文本信息,意味着所有方法上都加了@ResponseBody。而@ResponseBody一般用于AJAX异步获取数据。
(2)bean和component的区别
@Component注解表明一个类会作为组件类,并告知Spring要为这个类创建bean。
@Bean注解告诉Spring这个方法将会返回一个对象,这个对象要注册为Spring应用上下文中的bean。通常方法体中包含了最终产生bean实例的逻辑。
相同点:两者的结果都是为spring容器注册Bean.
不同点:@Component 通常是通过类路径扫描来自动侦测以及自动装配到Spring容器中。
@Bean 注解通常是我们在标有该注解的方法中定义产生这个bean的逻辑。
@Component (@Controller @Service @Respository)作用于类上,只有在我们的SpringBoot应用程序启用了组件扫描并且包含了被注解的类时才有效。通过组件扫描,Spring将扫描整个类路径,并将所有@Component注释类添加到Spring Context,这里有的不足就是会把整个类当成bean注册到spring 容器上,如果这个类中并不是所有方法都需要注册为bean的话,会出现不需要的方法都注册成为bean,这时候必须确保这些不需要的方法也能注册为bean或者在扫描中加filter 过滤这些不需要的bean,否者spring将无法成功启动。
@Bean相对来说就更加灵活了,它可以独立加在方法或者类上,按需注册到spring容器,而且如果你要用到第三方类库里面某个类或者方法的时候,你就只能用@Bean把这个类或者方法注册到spring容器,因为用@Component你需要配置组件扫描到这个第三方类路径而且还要在别人源代码加上这个注解,很明显是不现实的。
转载一篇优秀的博文:https://www.jianshu.com/p/c89a3550588a
2.注入bean的注解:
(1)autowired一般和@qualifier结合使用
例如
@Autowired
@Qualifier(value="userService")
(2)Resource
@Resource(name="userService")
3.springMVC的注解
@RequestMapping 用于映射Web请求,包括访问路径和参数(类或方法上)。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
@RequestMapping(value="/user/userAction.do")
特别注意:@GetMapping/@PostMapping和@RequestMapping的区别
@GetMapping是@RequsetMapping(method = RequestMethod.GET)的缩写,只接受get方式的请求
@PostMapping是@RequestMapping(method = RequestMethod.POST)的缩写,只接受post方式的请求
@GetMapping与@PostMapping和@RequestMapping同属于一个jar包
@Value(“${}”):注入的是外部配置文件对应的property,例如spring
boot搭建的项目,配置文件application.propertites
@RequestBody和@ResponseBody的使用和区别
@ResponseBody 注解表示该方法返回的结果直接写入Http响应正文,一般在异步获得数据时使用;在使用@RequestMapping后,返回值通常被解析为跳转路径,加上@ResponseBody后返回值不会被解析为跳转路径,而是直接写入HTTP响应正文中。例如,异步获得Json数据,加上@ResponseBody后 直接将后端以return返回的javabean类型数据转为json类型数据。
@RequestBody注解将Http请求正文插入方法中,将前端传来的json格式的数据转为自己定义好的javabean对象。
注:@RequestBody要写在方法的参数前,不能写在方法名上方
注:@ResponseBody要写在方法名上
4.springBoot的注解
@SpringBootApplication:入口类注解,定义入口类
@configuration:用于定义配置类,可替换xml配置文件,等同于ApplicationContext.xml,用于构建bean定义,初始化Spring容器。
@import:将某些类注入到IoC容器中
例如@Import({ LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class })