spring的注解

来源:互联网 发布:vmware mac破解版下载 编辑:程序博客网 时间:2024/06/03 13:55

映射:就是把一个数据库表里的字段和一个java类里的属性对应起来,让程序知道这个java类里的这个属性应该是数据库哪个表里的哪个字段。

url:统一资源定位符

@Scope注解 作用域

@Service用于标注业务层组件

@Controller用于标注控制层组件,自动扫描所有包

@Repository用于标注数据访问组件,即DAO组件,数据访问,对应存储层的bean,可以将标注层中类抛出的数据访问异常封装为 Spring 的数据访问异常类型。

@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

@Namespace:指定命名空间

@ParentPackage:指定父包

@Result:提供了Action结果的映射(一个结果的映射)

@Results:Result注解列表

@ResultPath:指定结果页面的基路径

@Action:指定Action的访问URL

@Actions:Action注解列表

@ExceptionMapping:指定异常映射(映射一个声明异常)

@ExceptionMappings:一级声明异常的数组

@InterceptorRef:拦截器引用

@InterceptorRefs:拦截器引用组

@Override :验证下面方法是否是父类中所有的方法,没有则报错

@Autowired 默认按类型装配,如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。如下:

@Autowired@Qualifier("personDaoBean") 存在多个实例配合使用

@Configuration把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean。

@PostConstruct用于指定初始化方法(用在方法上)

@PreDestory用于指定销毁方法(用在方法上)摧毁注解 默认 单例  启动就加载

@DependsOn:定义Bean初始化及销毁时的顺序

@Primary:自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常

@Resource默认按名称装配,当找不到与名称匹配的bean才会按类型装配。

@Async异步方法调用,需要添加以下代码:

<beanid="taskExecutor"class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">

<propertyname="corePoolSize" value="10"/>

<propertyname="maxPoolSize" value="300"/>

</bean>

<task:annotation-driven/>

@Temporal注释用来指定java.util.Date或java.util.Calender属性与数据库类型date、time或timestamp中的那一种类型进行映射。

 

@Temporal(value=TemporalType.TIME)

 

params= { "ignoreHierarchy", "false" }----返回继承的父类属性

params= { "contentType", "text/html" }----插入一个文本类型的对象

 

@SuppressWarnings(unchecked)作用解释文档

解释一:屏蔽某些编译时的警告信息,在强制类型转换的时候编译器会给出警告,加上程序代码 @SuppressWarnings("unchecked"),就不会警告了

解释二:注释类型,当你的编码可能存在警告时,比如安全警告,可以用它来消除

解释三:

该批注的作用是给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默。

 

deprecation使用了不赞成使用的类或方法时的警告

unchecked执行了未检查的转换时的警告,例如当使用集合时没有用泛型 (Generics) 来指定集合保存的类型。

fallthrough当 Switch 程序块直接通往下一种情况而没有 Break 时的警告。

path在类路径、源文件路径等中有不存在的路径时的警告。

serial当在可序列化的类上缺少 serialVersionUID 定义时的警告。

finally任何 finally 子句不能正常完成时的警告。

all关于以上所有情况的警告。

 

@Target :是Java的元注解(指修饰注解的注解)之一。用来指定注解修饰类的哪个成员。加大括号表示一个数组,指被修饰的注解能用于多个不同的类成员。

@entity:   表示当前为实体类  ,是指这个类映射有数据库表,不使用这个类时,后台应该不会对其进行处理,只有当从数据库读取数据时,由于你要读取的表映射有实体类(@entity注释的),那么后台应该会自动帮你实例化一个对象,然后将数据库中的数据填充到对象中

@Table    当实体类与其映射的数据库表名不同名时需要使用 @Table 标注说明,该标注      与@Entity 标注并列使用,置于实体类声明语句之前,可写于单独语句行,也可与声明语句    同行。@Table 标注的常用选项: name,用于指明数据库的表名 若不指定则以实体类名称作为表名,catalog 和 schema 用于设置表所属的数据库目录或模式,通常为数据库名。uniqueConstraints选项用于设置约束条件,通常不须设置。

@Id: 主键, 注释指定表的主键,它可以有多种生成方式:

1)TABLE:容器指定用底层的数据表确保唯一;

2)SEQUENCE:使用数据库德SEQUENCE列莱保证唯一(Oracle数据库通过序列来生成唯一ID);

3)IDENTITY:使用数据库的IDENTITY列莱保证唯一;

4)AUTO:由容器挑选一个合适的方式来保证唯一;

5)NONE:容器不负责主键的生成,由程序来完成。

@GeneratedValue: 主键生成策略。注释定义了标识字段生成方式。

           @GeneratedValue(strategy =GenerationType.IDENTITY)

           @GeneratedValue(strategy = IDENTITY)

@Retention:是java当中的一个元注解,该元注解通常都是用于对软件的测试

     @Retention(RetentionPolicy.RUNTIME)

     @interfaceTask{.......}

     参数RetentionPolicy.RUNTIME就说明了,@Task注解在程序运行时是可见的

     RetentionPolicy的枚举类型还有SOURCE、CLASS分别指定注解对于那个级别是可见的,但是

    我们一般都是用RUNTIME,因为这是在程序运行时可以对注解进行读取,从而易于软件的测试

@OneToMany:一对多

  (1) 映射策略---外键关联

  @OneToMany(cascade={ CascadeType.ALL })

  @ManyToOne(fetch = FetchType.LAZY)//懒加载 (提取=提取类型:懒加载)

          懒加载:就是在查询某一条数据的时候并不会直接将这条数据以指定对象的形式  来返回,而是在你真正需要使用该对象里面的一些属性的时候才会去数据库访问并得到数据。他的好处就是可以减少程序本身因为与数据库频繁的交互造成的处理速度缓慢。

  @JoinColumn(name="custo mer_id")

   (2) 映射策略---表关联

  @OneToMany(cascade = { CascadeType.ALL })//级联方式

         hibernate的级联操作,除了删除,其他操作都要做级联

    cascade属性的可能值有

    all: 所有情况下均进行关联操作,即save-update和delete。

    none: 所有情况下均不进行关联操作。这是默认值。

    save-update: 在执行save/update/saveOrUpdate时进行关联操作。

    delete: 在执行delete 时进行关联操作。

    all-delete-orphan: 当一个节点在对象图中成为孤儿节点时,删除该节点。比如在一个一对多的关系中,Student包含多个book,当在对象关系中删除一个book时,此book即成为孤儿节点。

 @JoinTable(name="ref_customer_address",

  (3) 默认关联

在数据库底层为两张表添加约束,

这样,在CustomerEO中只需要在标注@OneToMany即可!

@ManyToOne:多对一

 (1) 外键关联

  @ManyToOne(cascade = { CascadeType.ALL })

  @JoinColumn(name="customer_id")

(2) 默认关联

数据库脚本定义的相关字段的约束,创建外键后,直接使用@ManyToOne

@ManyToMany多对多

@JoinColumn(nullable = true, name ="receiverId", referencedColumnName = "userId")

name注释本表中指向另一个表的外键。referencedColumnName:引用列名称 nullable:可空

@Column :映射字段的定义,包括映射的数据库表的字段名称。是否允许为空。字段长度等等定义。

注释定义了将成员属性映射到关系表中的哪一列和该列的结构信息,属性如下:

1)name:映射的列名。如:映射tbl_user表的name列,可以在name属性的上面或getName方法上面加入;

2)unique:是否唯一;

3)nullable:是否允许为空;

4)length:对于字符型列,length属性指定列的最大字符长度;

5)insertable:是否允许插入;

6)updatetable:是否允许更新;

7)columnDefinition:定义建表时创建此列的DDL;

8)secondaryTable:从表名。如果此列不建在主表上(默认是主表),该属性定义该列所在从表的名字。

unique=true是指这个字段的值在这张表里不能重复,所有记录值都要唯一,就像主键那样
nullable=false
是这个字段在保存时必需有值,不能还是null值就调用save去保存入库

@Column(name= "x", nullable = false, precision = 22, scale = 0)???

 

@Transactional注解中常用参数说明

1)readOnly该属性用于设置当前事务是否为只读事务,设置为true表示只读,false则表示可读写,默认值为false。例如:@Transactional(readOnly=true)

2)rollbackFor该属性用于设置需要进行回滚的异常类数组,当方法中抛出指定异常数组中的异常时,则进行事务回滚。例如:

指定单一异常类:@Transactional(rollbackFor=RuntimeException.class)

指定多个异常类:@Transactional(rollbackFor={RuntimeException.class,Exception.class})

3)rollbackForClassName该属性用于设置需要进行回滚的异常类名称数组,当方法    中抛出指定异常名称数组中的异常时,则进行事务回滚。例如:

指定单一异常类名称@Transactional(rollbackForClassName="RuntimeException")

指定多个异常类名称@Transactional(rollbackForClassName={"RuntimeException","Exception"})

4)noRollbackFor该属性用于设置不需要进行回滚的异常类数组,当方法中抛出指定异常数组中的异常时,不进行事务回滚。例如:

指定单一异常类:@Transactional(noRollbackFor=RuntimeException.class)

指定多个异常类:@Transactional(noRollbackFor={RuntimeException.class,Exception.class})

5)noRollbackForClassName该属性用于设置不需要进行回滚的异常类名称数组,当方法中抛出指定异常名称数组中的异常时,不进行事务回滚。例如:

指定单一异常类名称:@Transactional(noRollbackForClassName="RuntimeException")

指定多个异常类名称:@Transactional(noRollbackForClassName={"RuntimeException","Exception"})

6)propagation该属性用于设置事务的传播行为,具体取值可参考表6-7。

例如:@Transactional(propagation=Propagation.NOT_SUPPORTED,readOnly=true)

7)isolation该属性用于设置底层数据库的事务隔离级别,事务隔离级别用于处理多事务并发的情况,通常使用数据库的默认隔离级别即可,基本不需要进行设置

8)timeout该属性用于设置事务的超时秒数,默认值为-1表示永不超时

 

 

 

 

 

@SuppressWarnings(unchecked)作用解释文档

解释一:    

    屏蔽某些编译时的警告信息  

     在强制类型转换的时候编译器会给出警告  

    加上   

   程序代码   

  @SuppressWarnings("unchecked")    

  就不会警告了解释二:注释类型当你的编码可能存在警告时,

比如安全警告,可以用它来消除api中是这样描述的指示应该在注释元素(以及包含在该注释元素中的所有程序元素)中取消显示指定的编译器警告。

解释一: 

       屏蔽某些编译时的警告信息

       在强制类型转换的时候编译器会给出警告

       加上程序代码@SuppressWarnings("unchecked")

       就不会警告了

 

解释二:

      注释类型

      当你的编码可能存在警告时,比如安全警告,可以用它来消除

      api中是这样描述的

 

      指示应该在注释元素(以及包含在该注释元素中的所有程序元素)中取消显示指定的编译器警告。注意,在给定元素中取消显示的警告集是所有包含元素中取消显示的警告的超集。例如,如果注释一个类来取消显示某个警告,同时注释一个方法来取消显示另一个警告,那么将在此方法中同时取消显示这两个警告。

 

 根据风格不同,程序员应该始终在最里层的嵌套元素上使用此注释,在那里使用才有效。如果要在特定的方法中取消显示某个警告,则应该注释该方法而不是注释它的类。

 

解释三:

    @SuppressWarnings

 J2SE 提供的最后一个批注是 @SuppressWarnings。该批注的作用是给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默。

 

一点背景:J2SE 5.0 为 Java 语言增加了几个新的特性,并且和它们一起增加了许多新的警告并承诺在将来增加更多的警告。您可以为"javac" 增加 -Xlint 参数来控制是否报告这些警告(如上面的 @Deprecated 部分所示)。

默认情况下,Sun 编译器以简单的两行的形式输出警告。通过添加 -Xlint:keyword 标记(例如 -Xlint:finally),您可以获得关键字类型错误的完整说明。通过在关键字前面添加一个破折号,写为 -Xlint:-keyword,您可以取消警告。(-Xlint 支持的关键字的完整列表可以在上找到。)下面是一个清单:

关键字

用途

deprecation

使用了不赞成使用的类或方法时的警告

unchecked

执行了未检查的转换时的警告,例如当使用集合时没有用泛型 (Generics) 来指定集合保存的类型。

fallthrough

当Switch 程序块直接通往下一种情况而没有 Break 时的警告。

path

在类路径、源文件路径等中有不存在的路径时的警告。

serial

当在可序列化的类上缺少 serialVersionUID 定义时的警告。

finally

任何finally 子句不能正常完成时的警告。

all

关于以上所有情况的警告。

@SuppressWarnings 批注允许您选择性地取消特定代码段(即,类或方法)中的警告。其中的想法是当您看到警告时,您将调查它,如果您确定它不是问题,您就可以添加一个 @SuppressWarnings批注,以使您不会再看到警告。虽然它听起来似乎会屏蔽潜在的错误,但实际上它将提高代码安全性,因为它将防止您对警告无动于衷— 您看到的每一个警告都将值得注意。

 

原创粉丝点击