Java常用注解

文章目录

  • 1、Java自定义注解方法:
  • 2、AOP相关注解
  • 3、@Slf4j
  • 4、@Configuration
  • 5、@Repository
  • 6、@Deprecated
  • 7、@PostConstruct
  • 8、lombok相关
  • 9、@DependsOn
  • 10、@Component
  • 11、@Autowired、@Qualifier
  • 12、@DependsOn("springUtil")
  • 13、@PostConstruct

1、Java自定义注解方法:

import java.lang.annotation.*;@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME) //表示注解的信息被保留在class文件(字节码文件)中当程序编译时,会被虚拟机保留在运行时,
@Documented
public @interface BaseLog {
    String description() default "";
}

https://www.jianshu.com/p/47834f36c2d1

2、AOP相关注解

  • @Aspect
    作用:把当前类标识为一个切面供容器读取。

  • @Pointcut
    作用:是植入Advice的触发条件。

  • @Before、@After
    @Before作用:用@Before标识的方法为前置方法,在目标方法的执行之前执行,即在连接点之前进行执行。

  • @After作用:后置方法在连接点方法完成之后执行,无论连接点方法执行成功还是出现异常,都将执行后置方法。

  • @AfterReturning
    @AfterReturning当连接点方法成功执行后,返回通知方法才会执行,如果连接点方法出现异常,则返回通知方法不执行。

  • @AfterThrowing
    异常通知方法只在连接点方法出现异常后才会执行,否则不执行。

  • @Around
    环绕通知方法可以包含上面四种通知方法,环绕通知的功能最全面。环绕通知需要携带 ProceedingJoinPoint 类型的参数,且环绕通知必须有返回值, 返回值即为目标方法的返回值。

https://blog.csdn.net/u010502101/article/details/78823056
@Aspect 注解使用详解

3、@Slf4j

如果不想每次都写private final Logger logger = LoggerFactory.getLogger(当前类名.class); 可以用注解@Slf4j; 类上面添加@Sl4j注解,然后就可以直接使用log打印日志:log.info(“日志打印”); 需要引入lombok插件。

4、@Configuration

https://www.jianshu.com/p/721c76c1529c

5、@Repository

@repository是用来注解接口,这个注解是将接口xxxMapper的一个实现类交给spring管理。

@repository的含义,并且有时候却不用写,为什么?

6、@Deprecated

@Deprecated 表示此方法已废弃、暂时可用,但以后此类或方法都不会再更新、后期可能会删除,建议后来人不要调用此方法。

7、@PostConstruct

8、lombok相关

  • @Data
    @Getter、@Setter、@ToString, @EqualsAndHashCode和@RequiredArgsConstructor 组合的便捷写法

  • @Builder
    注释为你的类生成相对略微复杂的构建器API。@Builder可以让你以下面显示的那样调用你的代码,来初始化你的实例对象:

Student.builder()
  .sno( "001" ) 
  .sname( "admin" ) 
  .sage( 18 ) 
  .sphone( "110" ) 
  .build();

@Builder可以放在类,构造函数或方法上。 虽然放在类上和放在构造函数上这两种模式是最常见的用例,但@Builder最容易用放在方法的用例来解释。

  • @Tolerate
    使用@Builder对一个DTO实现一个构造器,但是在做Json反序列化的时候发生错误,原因就是缺少无参公共的构造函数,而手动写一个无参构造函数的时候编译错误,就是和@Builder冲突,虽然标准的@Builder没法是需要私有化构造函数的,但是在某些场景下我们需要对这种标准变形,这个时候Lombok提供了@Tolerate实现对冲突的兼容。
@Data
@Builder
public class User {
    @Tolerate
    public User() {}
    private String name;
    private int age;
}

9、@DependsOn

@DependsOn表示被注解的bean在初始化时,指定的bean需要先完成初始化。
使用Spring @DependsOn控制bean加载顺序

10、@Component

一旦使用关于Spring的注解出现在类里,例如我在实现类中用到了@Autowired注解,被注解的这个类是从Spring容器中取出来的,那调用的实现类也需要被Spring容器管理,加上@Component
@Component注解的用法

11、@Autowired、@Qualifier

public interface IProducerProcessor {
	//接口定义
}
@Service("sample1")
public producerProcessorImpl1 implements IProducerProcessor {
	//接口实现2
}
@Service("sample2")
public producerProcessorImpl2 implements IProducerProcessor {
	//接口实现1
}
@Autowired
@Qualifier("sample1")
private IProducerProcessor sampleProducer1;

@Resource(name="sample2")
private IProducerProcessor sampleProducer2;

Spring的注解@Qualifier用法

12、@DependsOn(“springUtil”)

容器启动过程中,spring按任意顺序加载bean,使用@DependsOn(“springUtil”)可以让springUtil这个Bean先加载,使用与某些依赖springUtil的场景。

13、@PostConstruct

被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器调用一次,类似于Servlet的inti()方法。被@PostConstruct修饰的方法会在构造函数之后,init()方法之前运行。
执行顺序:Constructor >> @Autowired >> @PostConstruct

你可能感兴趣的:(Java)