一、注解的基础
1.注解的定义:Java文件叫做Annotation,用@interface表示。
2.java1.5起默认的三个注解
@Override:只能用在方法之上的,用来告诉别人这一个方法是改写父类的。
@Deprecated:建议别人不要使用旧的API的时候用的,编译的时候会产生警告信息,可以设定在程序里的所有的元素上.
@SuppressWarnings:这一个类型可以用来暂时把一些警告信息消息关闭.
3.元注解:@interface上面按需要注解上一些东西,包括@Retention、@Target、@Document、@Inherited四种。
3.注解的保留策略:
@Retention(RetentionPolicy.SOURCE) // 注解仅存在于源码中,在class字节码文件中不包含
@Retention(RetentionPolicy.CLASS) // 默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得
@Retention(RetentionPolicy.RUNTIME) // 注解会在class字节码文件中存在,在运行时可以通过反射获取到
4.注解的作用目标:
@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) // 包
5.自定义注解demo
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface AnnotationAudit { }
6、Spring的注解
关于配Bean用的
@Component
@Controller @Service @Repository
作用:都是用于创建bean对象。都有一个value属性,用于指定bean的id。
关于注入参数的
@Autowired:自动按照类型注入。
如果有多个类型都匹配时,它会使用变量名称作为bean的id。在容器中查找
找到了也能注入成功。找不到就报错。
@Qualifier:在按照类型注入的基础之上,再按照名称注入。
@Resource:直接就是按照名称注入。
指定bean的id的属性:name
//--------------以上三个都是用于注入其他bean类型的--------------------------------
@Value:用于注入基本类型以及String类型数据的
关于Bean的作用范围的
@Scope:指定bean的作用范围。
singleton:单例
prototype:多例
request
session
globalsession
关于事务控制的
@Transactional:用于控制事务。可以出现在接口上,类上和方法上。
出现在接口上,表示当前接口的所有实现类均有事务支持。
出现类上,表示当前类的所有方法都有事务的支持。
出现在方法上,表示当前方法有事务的支持。
优先级:就近原则。
7、Struts2的注解
@ParentPackage:指定当前包的父包。和配置文件中extends的属性作用一样。
@Namespace:指定当前类的访问名称空间。和配置文件中namespace属性作用一样。
@Results:用于指定多个结果视图。里面包含的都是@Result。
@Result:用于指定结果视图。
属性:name:和动作方法返回值一致。type:前往页面的方式(转发/重定向)
location:前往的页面。写法必须是/xxx/xxxx/..../xxx.jsp
//------------------以上四个注解都是写在动作类上的----------------------------
@Action:用于指定动作名称。和jsp页面上访问的动作名称应该保持一致。此处不需要也不能写后缀。
8、Hibernate的注解
@Entity:指定当前类是一个实体了,用于让hibernate扫描并生成映射配置。
@Table:指定当前类和数据库表的对应关系。
@Id:指定当前字段是主键字段。就是Hiberante中的OID。
@Column:指定当前字段和数据库表中的列的对应关系。
@GeneratedValue:指定主键的生成策略。
IDENTITY:支持数据库字段自增长
SEQUENCE:支持数据库序列自增长
AUTO:使用Hibernate中的高低位算法。
@OneToOne 一对一映射用
@ManyToOne 多对一映射用
@OneToMany 一对多映射用
@ManyToMany 多对多映射
9.mybatis注解
@insert 增加
@update 修改
@select 查询
@delete 删除
@param 参数命名,如果你的映射器的方法需要多个参数,这个注解可以被应用于映射器的方法参数来给每个参数一个名字。否则,多参数将会以它们的顺序位置来被命名
@InsertProvider @UpdateProvider @DeleteProvider @SelectProvider 这些可选的 SQL 注解允许你指定一个类名和一个方法在执行时来返回运行允许创建动态的 SQL,这里有两个属性,type属性是类。method属性是方法名