1. Spring4.3中引进了{@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping},来帮助简化常用的HTTP方法的映射,并更好地表达被注解方法的语义。
以@GetMapping为例,Spring官方文档说:
@GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。该注解将HTTP Get 映射到 特定的处理方法上。
2. @Resource 和@Autowired 的区别对比
@Resource 和@Autowired 都是做bean 的注入时使用,其实@Resource 并不是Spring 的注解,它的包是javax.annotation.Recource,需要导入,但是Spring 支持该注解的注入。
2.1 共同点
两者都可以写在字段和setter 方法上。两者如果都写在字段上,那么就不需要再写setter 方法。
2.2 不同点
(1) @Autowired
@Autowired 为Spring 提供的注解,需要导入包org.springframework.beans.factory.annotation.Autowired;只按照byType 注入。
public class TestServiceImpl {
// 下面两种@Autowired只要使用一种即可
@Autowired
private UserDao userDao; // 用于字段上
@Autowired
public void setUserDao(UserDao userDao) { // 用于属性的方法上
this.userDao = userDao;
}
}
@Autowired 注解是按照类型(byType)装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null 值,可以设置它的required属性为false.
如果我们想使用按照名称(byName) 来装配,可以结合@Qualifier 注解一起使用。如下:
public class TestServiceImpl{
@Autowired
@Qualifier("userDao)
private UserDao userDao;
}
(2)@Resource
@Resource默认按照ByName自动注入,由J2EE提供,需要导入包javax.annotation.Resource。@Resource有两个重要的属性:name和type,而Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以,如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不制定name也不制定type属性,这时将通过反射机制使用byName自动注入策略
3. 项目中用到得注解
(1)、@CrossOrigin (2)、@RestController (3)、@Autowired (4)、@RequestMapping (5)、@FeignClient (6)、@Configuration
(7)、@EnableCaching (8)、@EnableFeignClients (9)、@EnableEurekaClient (10)、@SpringBootApplication (11)、@Override
(12) @Aspect (13)、@Component (14)、 @Pointcut (15)、@Before (16)、@AfterReturning (17)、@RequestParam (18)、@RequestBody
(19)、@EnableDiscoverClient (20)、@ComponentScan 、 (21)、@MapperScan (22)、@Service (23)、@Scheduled (25)、@Value
(26)、Import (27)、@Bean (28)、@DependsOn (29)、@ConditionalOnMissingBean (30)、@ServerEndpoint (31)、@OnOpen
(32)、Onclose (33)、OnMessage (34)、OnError (35)、@CrossOrigin
4、@component (把普通pojo实例化到spring容器中,相当于配置文件中的
<bean id="" class=""/>)
泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。
案例:
<context:component-scan base-package=”com.*”>
上面的这个例子是引入Component组件的例子,其中base-package表示为需要扫描的所有子包。
共同点:被@controller 、@service、@repository 、@component 注解的类,都会把这些类纳入进spring容器中进行管理