java 注解集合

@SuppressWarnings 

注解是jse提供的注解。作用是屏蔽一些无关紧要的警告。使开发者能看到一些他们真正关心的警告。从而提高开发者的效率  

简介:java.lang.SuppressWarnings是J2SE 5.0中标准的Annotation之一。可以标注在类、字段、方法、参数、构造方法,以及局部变量上。作用:告诉编译器忽略指定的警告,不用在编译完成后出现警告信息。
使用:
@SuppressWarnings(“”)
@SuppressWarnings({})
@SuppressWarnings(value={})

二.注解目标
通过@SuppressWarnings 的源码可知,其注解目标为类、字段、函数、函数入参、构造函数和函数的局部变量。而大家建议注解应声明在最接近警告发生的位置。 

三.抑制警告的关键字
关键字    用途
all    to suppress all warnings
boxing     to suppress warnings relative to boxing/unboxing operations
cast    to suppress warnings relative to cast operations
dep-ann    to suppress warnings relative to deprecated annotation
deprecation    to suppress warnings relative to deprecation
fallthrough    to suppress warnings relative to missing breaks in switch statements
finally     to suppress warnings relative to finally block that don’t return
hiding    to suppress warnings relative to locals that hide variable
incomplete-switch    to suppress warnings relative to missing entries in a switch statement (enum case)
nls    to suppress warnings relative to non-nls string literals
null    to suppress warnings relative to null analysis
rawtypes    to suppress warnings relative to un-specific types when using generics on class params
restriction    to suppress warnings relative to usage of discouraged or forbidden references
serial    to suppress warnings relative to missing serialVersionUID field for a serializable class
static-access    to suppress warnings relative to incorrect static access
synthetic-access     to suppress warnings relative to unoptimized access from inner classes
unchecked    to suppress warnings relative to unchecked operations
unqualified-field-access    to suppress warnings relative to field access unqualified
unused    to suppress warnings relative to unused code
all to suppress all warnings (抑制所有警告)
boxing to suppress warnings relative to boxing/unboxing operations(抑制装箱、拆箱操作时候的警告)
cast to suppress warnings relative to cast operations (抑制映射相关的警告)
dep-ann to suppress warnings relative to deprecated annotation(抑制启用注释的警告)
deprecation to suppress warnings relative to deprecation(抑制过期方法警告)
fallthrough to suppress warnings relative to missing breaks in switch statements(抑制确在switch中缺失breaks的警告)
finally to suppress warnings relative to finally block that don’t return (抑制finally模块没有返回的警告)
hiding to suppress warnings relative to locals that hide variable()
incomplete-switch to suppress warnings relative to missing entries in a switch statement (enum case)(忽略没有完整的switch语句)
nls to suppress warnings relative to non-nls string literals(忽略非nls格式的字符)
null to suppress warnings relative to null analysis(忽略对null的操作)
rawtypes to suppress warnings relative to un-specific types when using generics on class params(使用generics时忽略没有指定相应的类型)
restriction to suppress warnings relative to usage of discouraged or forbidden references
serial to suppress warnings relative to missing serialVersionUID field for a serializable class(忽略在serializable类中没有声明serialVersionUID变量)
static-access to suppress warnings relative to incorrect static access(抑制不正确的静态访问方式警告)
synthetic-access to suppress warnings relative to unoptimized access from inner classes(抑制子类没有按最优方法访问内部类的警告)
unchecked to suppress warnings relative to unchecked operations(抑制没有进行类型检查操作的警告)
unqualified-field-access to suppress warnings relative to field access unqualified (抑制没有权限访问的域的警告)
unused to suppress warnings relative to unused code  (抑制没被使用过的代码的警告)
 

 

@controller 控制器(注入服务)

用于标注控制层,相当于struts中的action层

 

@PostConstruct

从Java EE5规范开始,Servlet中增加了两个影响Servlet生命周期的注解,@PostConstruct和@PreDestroy,这两个注解被用来修饰一个非静态的void()方法。写法有如下两种方式:

@PostConstruct

public void someMethod(){}

或者

public @PostConstruct void someMethod(){}

被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init()方法之前执行。PreDestroy()方法在destroy()方法知性之后执行

执行顺序
另外,spring中Constructor、@Autowired、@PostConstruct的顺序

其实从依赖注入的字面意思就可以知道,要将对象p注入到对象a,那么首先就必须得生成对象a和对象p,才能执行注入。所以,如果一个类A中有个成员变量p被@Autowried注解,那么@Autowired注入是发生在A的构造方法执行完之后的。

如果想在生成对象时完成某些初始化操作,而偏偏这些初始化操作又依赖于依赖注入,那么久无法在构造函数中实现。为此,可以使用@PostConstruct注解一个方法来完成初始化,@PostConstruct注解的方法将会在依赖注入完成后被自动调用。

Constructor >> @Autowired >> @PostConstruct

举个栗子:

public Class AAA {

    @Autowired

    private BBB b;

    public AAA() {

        System.out.println("此时b还未被注入: b = " + b);

    }

    @PostConstruct

    private void init() {

        System.out.println("@PostConstruct将在依赖注入完成后被自动调用: b = " + b);

    }

}

 

@service 服务(注入dao)

用于标注服务层,主要用来进行业务的逻辑处理

 

@repository(实现dao访问)

用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件.

 

@Target:注解的作用目标

@Target(ElementType.TYPE)——接口、类、枚举、注解
@Target(ElementType.FIELD)——字段、枚举的常量
@Target(ElementType.METHOD)——方法
@Target(ElementType.PARAMETER)——方法参数
@Target(ElementType.CONSTRUCTOR) ——构造函数
@Target(ElementType.LOCAL_VARIABLE)——局部变量
@Target(ElementType.ANNOTATION_TYPE)——注解
@Target(ElementType.PACKAGE)——包

@Retention:注解的保留位置

RetentionPolicy.SOURCE:这种类型的Annotations只在源代码级别保留,编译时就会被忽略,在class字节码文件中不包含。
RetentionPolicy.CLASS:这种类型的Annotations编译时被保留,默认的保留策略,在class文件中存在,但JVM将会忽略,运行时无法获得。
RetentionPolicy.RUNTIME:这种类型的Annotations将被JVM保留,所以他们能在运行时被JVM或其他使用反射机制的代码所读取和使用。
@Document:说明该注解将被包含在javadoc中
@Inherited:说明子类可以继承父类中的该注解

 

@component (把普通pojo实例化到spring容器中,相当于配置文件中的 

泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类

下面写这个是引入component的扫描组件 

<context:component-scan base-package=”com.mmnc”>

 其中base-package为需要扫描的包(含所有子包) 

       1、@Service用于标注业务层组件 
       2、@Controller用于标注控制层组件(如struts中的action) 
       3、@Repository用于标注数据访问组件,即DAO组件. 
       4、@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。    
             @Service public class UserServiceImpl implements UserService { }      

            @Repository public class UserDaoImpl implements UserDao { } getBean的默认名称是类名(头字母小写),如果想自定义,可以@Service(“***”)               这样来指定,这种bean默认是单例的,如果想改变,可以使用@Service(“beanName”) 

           @Scope(“prototype”)来改变。可以使用以下方式指定初始化方法和销毁方法(方法名任意): @PostConstruct public void init() { }

 

@ImportResource

导入Spring的配置文件
让配置文件里面的内容生效

使用方式
标注在一个配置类上

@ImportResource(
        locations = {"classpath:META-INF/spring/*.xml",
                "classpath*:XXXX.xml",
                "classpath*:XXXX.xml"
        })

@Conditional

@Conditional是Spring4新提供的注解,它的作用是按照一定的条件进行判断,满足条件给容器注册bean。

 

@ConditionalOnMissingBean

使用注解@ConditionalOnMissingBean和@Bean,可以做到只有特定名称或者类型的Bean不存在于BeanFactory中时才创建某个Bean :

@Configuration
public class ConditionalOnMissingBeanConfig {

    @Bean
    public A beanA(){
        return new A(); // 无条件定义一个bean : beanA
    }
    
    @Bean
    @ConditionalOnMissingBean(name="beanA")
    public B beanB(){
	    // 如果 beanFactory 中存在一个名称为 beanA 的 bean,才定义bean : beanB;
		// 因为上面的方法已经定义了一个 beanA,所以这里 beanB定义并不会发生。
        return new B(); 
    }
    
    @Bean
    @ConditionalOnMissingBean(name="beanD")
    public C beanC(){
	    // 如果 beanFactory 中存在一个名称为 beanD的 bean,才定义bean : beanC;	    
        return new C(); 
    }
   
}

ConditionalOnMissingBean注解条件匹配所检查的bean定义仅限于spring boot 执行过程中application context截至当前所处理的那些bean,因此,强烈建议仅将 ConditionalOnMissingBean 使用于 auto-configuration 类。另外,如果一个候选 bean 需要在另外一个 auto-configuration 完成之后创建(或者不创建),那么需要确保该 ConditionalOnMissingBean 在那个 auto-configuration 完成之后执行。

注解 ConditionalOnMissingBean 的官方API文档
 

@JsonIgnoreProperties

转换实体时忽略json中不存在的字段

@JsonIgnore注解用来忽略某些字段,可以用在Field或者Getter方法上,用在Setter方法时,和Filed效果一样。这个注解只能用在POJO存在的字段要忽略的情况,不能满足现在需要的情况。

@JsonIgnoreProperties(ignoreUnknown = true),将这个注解写在类上之后,就会忽略类中不存在的字段,可以满足当前的需要。这个注解还可以指定要忽略的字段。使用方法如下:

@JsonIgnoreProperties({ "internalId", "secretKey" })

指定的字段不会被序列化和反序列化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值