一,入口文件注解
-
@SpringBootApplication:
用在项目入口文件三个注解的集合,(默认属性)@Configuration + @EnableAutoConfiguration + @ComponentScan
1、@Configuration:提到@Configuration就要提到他的搭档@Bean。使用这两个注解就可以创建一个简单的spring配置类,可以用来替代相应的xml配置文件。使用这个注解的类可以使用Spring IoC容器作为bean定义的来源。@Bean注解告诉Spring,一个带有@Bean的注解方法将返回一个对象,该对象应该被注册为在Spring应用程序上下文中的bean。
2、@EnableAutoConfiguration:能够自动配置spring的上下文,试图猜测和配置你想要的bean类,通常会自动根据你的类路径和你的bean定义自动配置。
3、@ComponentScan:会自动扫描指定包下的全部标有@Component的类,并注册成bean,当然包括@Component下的子注解@Service,@Repository,@Controller。
二,aspect 常用注解
- @Aspect:该标签作用是把当前类标识为一个切面供容器读取
- @Pointcut:植入Advice的触发条件。每个Pointcut的定义包括2部分,一是表达式,二是方法签名。方法签名必须是 public及void型。可以将Pointcut中的方法看作是一个被Advice引用的助记符,因为表达式不直观,因此我们可以通过方法签名的方式为 此表达式命名。因此Pointcut中的方法只需要方法签名,而不需要在方法体内编写实际代码。
- @Around:环绕增强,相当于MethodInterceptor
- @Before:标识一个前置增强方法,相当于BeforeAdvice的功能
- @After:final增强,不管是抛出异常或者正常退出都会执行
- @AfterReturning:后置增强,相当于AfterReturningAdvice,方法正常退出时执行
- @AfterThrowing:异常抛出增强,相当于ThrowsAdvice
三,config 常用注解
- @Configuration:用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器(不可以是final类型,不可以是匿名类,必须是静态类)
- @ConditionalOnClass:用途是判断当前classpath下是否存在指定类,若是则将当前的配置装载入spring容器。举例来说,如果在maven中引入了velocity,那么视图就使用velocity,若引入的是freemarker,则使用freemarker。
- @EnableConfigurationProperties:如果一个配置类只配置@ConfigurationProperties注解,而没有使用@Component,那么在IOC容器中是获取不到properties 配置文件转化的bean。说白了 @EnableConfigurationProperties 相当于把使用 @ConfigurationProperties 的类进行了一次注入。
- @ConditionalOnMissingBean:配置类中有两个Computer类的bean,一个是笔记本电脑,一个是备用电脑。如果当前容器中已经有电脑bean了,就不注入备用电脑,如果没有,则注入备用电脑,这里需要使用到@ConditionalOnMissingBean。
四,controller 常用注解
- @RestController:相当于@Controller+@ResponseBody两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面
- @RequestMapping:是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
- @RequestBody:在POST请求中,才能使用@RequestBody,对于参数转化的配置必须统一
- @RequestParam:在GET/POST请求,都可以使用@RequestParam
- @GetMapping :@requestMapping(method = RequestMethod.GET)
- @PostMapping:@requestMapping(method = RequestMethod.POST)
五,entity 常用注解
- @Entity:必须与@Id注解 结合使用
- @Table:映射的数据库表名
- @Data:可以不需要生成Set,Get方法,简化代码
- @Id:标注用于声明一个实体类的属性映射为数据库的主键列。该属性通常置于属性声明语句之前,可与声明语句同行,也可写在单独行上。
- @GeneratedValue:用于标注主键的生成策略,通过strategy 属性指定。默认情况下,JPA 自动选择一个最适合底层数据库的主键生成策略:SqlServer对应identity,MySQL 对应 auto increment
六,exceptiion 常用注解
- @Slf4j:如果不想每次都写private final Logger logger = LoggerFactory.getLogger(当前类名.class); 可以用注解@Slf4j,生成日志类实体
- @RestControllerAdvice:拦截异常并统一处理,作为特化@Component,允许通过类路径扫描自动检测实现类。它通常用于定义@ExceptionHandler, @InitBinder 和 @ModelAttribute 适用于所有@RequestMapping方法的方法。
七,mapper 常用注解
- @Mapper:自动根据一个添加@Mapper注解的接口生成一个实现类
- @Repository:DAO/MAPPER类上标注,它用于将数据访问层 (DAO 层 ) 的类标识为 Spring Bean
- @Select:只需要在mapper中方法上加入@Select(),然后在括号中写入需要实现的sql查询语句即可
八,service 常用注解
- @Service:用在服务提供者中,在类或者接口中声明,服务提供者实现相关的服务接口,当消费端调用相关的类时,最终会调用提供者的实现方法
- @Bean: 该注解告诉Spring这个方法将会返回一个对象,这个对象要注册为Spring应用上下文中的bean。通常方法体中包含了最终产生bean实例的逻辑,当我们引用第三方库中的类需要装配到Spring容器时,则只能通过@Bean来实现(区别于@Component)
- @Autowired:是用在JavaBean中的注解,通过byType形式,用来给指定的字段或方法注入所需的外部资源。
- @Override:重写父类的方法,比如toString()方法的话,在方法前面加上@Override 系统可以帮你检查方法的正确性。
九,util 常用注解
- @Component:注解表明一个类会作为组件类,并告知Spring要为这个类创建bean
- @Resource:Spring将@Resource注解的name属性解析为bean的名字,type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,(区别于@Autowired)