注解是Spring和Mybatis框架所大量使用的技术,要想掌握框架相关技术,注解是必须要掌握的。
掌握注解的优势:
1.能够读懂别人写的代码,特别是框架相关的代码。
2.本来可能需要很多配置文件,需要很多逻辑才能实现的内容,就可以使用一个或者多个注解来替代,这样就使得编程更加简洁,代码更加清晰。
3.会自定义注解的话能够让人高看一眼。
注解这一概念是在java1.5版本提出的,说Java提供了一种原程序中的元素关联任何信息和任何元数据的途径的方法。
一、Java常见注解
1、Java 自带注解
@Override //该注解作用就是告诉我们和编译器该注解下的方法覆盖了Person类的方法
@Deprecated //测试方法是否过时
@SuppressWarnings 就表示我们忽略警告。
2、第三方注解
2.1、Spring 注解
1 1.1 装配Bean的相关注解 2 @Component 3 该注解配置在类上,可以将类装配到spring容器中,并且可以通过其属性value值id名称 4 @Controller 5 是@Component的衍生注解,使用web层上的,用法和@Component一致 6 @Service 7 是@Component的衍生注解,使用在service层上的,用法和@Component一致 8 @Repository 9 是@Component的衍生注解,使用在dao层上的,用法和@Component一致 10 @Bean 11 该注解配置在方法上,可以将方法的返回值装配到spring容器中,默认的id为方法名 称,可以通过其name属性指定id名称 12 1.2 属性注入的相关注解 13 @Value 14 可以给基本类型和String类型注入属性值,并且可以使用占位符表达式${jdbcUrl}获取 资源文件中的数据,如果是配置类,需要资源文件解析器的支持。 PropertySourcesPlaceholderConfigurer 15 @Autowired 16 用来注入bean类型的,会自动按照类型进行注入,如果有多个类型匹配,会使用变量成名作为id到spring容器中进行匹配注入 17 @Qualifier 18 用来配合@Autowired,通过指定id进行bean类型的注入 19 还可以使用在方法的参数中,通过id进行bean类型的注入 20 @Resource 21 用来通过id进行bean类型的注入,相当于配置了@Autowired+@Qualifier两个注解 22 1.3 配置类相关 23 @Configuration 24 通知spring这是一个配置类,用来代替applicationContext.xml的 25 @ComponentScan 26 用来在配置类上设置注解扫描的包相当于<context:component-scan base-package="cn.itcast"></context:component-scan> 27 @Import 28 用来引入其他类的信息,将其导入到配置类中。 29 @PropertySource 30 该注解可以用来加载资源文件,比如:jdbc.properties 31 @EnableTransactionManagement 32 使用注解事务 33 @EnableAspectJAutoProxy 34 使用注解的AOP 35 1.4 测试相关 36 @RunWith 37 通知spring使用spring的test模块整合junit,方便我们进行测试SpringJUnit4ClassRunner.class 38 @ContextConfiguration 39 该注解是用来加载xml配置文件或者配置类的,用以创建spring容器。 40 配置类的加载方式 41 classes={SpringConfiguration.class} 42 Xml的加载方式 43 locations={"classpath:applicationContext.xml"} 44 1.5 事务 45 @Transactional 46 配置事务管理的注解,可以设置传播行为和是只读等。 47 1.6 其他 48 @Scope 49 设置bean的作用域的 50 @PostConstruct 51 设置方法为初始化方法 52 @PreDestroy 53 设置方法为销毁方法
2.2、Struts2 注解
1 @Namespace("/customer") 2 设置名称空间 3 @ParentPackage("struts-default") 4 设置所要继承的父包 5 @Action 6 指定当前动作方法的动作名称。也就是xml配置时action标签的name属性。 7 @Result 8 出现在Action注解中,表示当前Action可用此视图,相当于配置一个局部结果集视图 9 出现在类上,表示当前动作类中的所有动作方法都可以用此视图,相当于配置一个全局结果集视图
10 @InterceptorRef
11 用于配置要引用的拦截器或者拦截器栈
2.3、Hibernate 注解
1 @Entity 2 作用:指定当前类是实体类。写上此注解用于在创建SessionFactory/EntityManager时,加载映射配置。 3 @Table 4 作用:指定实体类和表之间的对应关系。 5 属性: 6 name:指定数据库表的名称 7 @Id 8 作用:指定当前字段是主键。 9 @GeneratedValue 10 作用:指定主键的生成方式。JPA的主键生成方式详解见2.4小节的说明。 11 属性: 12 strategy :指定主键生成策略。JPA支持四种生成策略,具体介绍看2.4小节。 13 @Column 14 作用:指定实体类属性和数据库表之间的对应关系 15 属性: 16 name:指定数据库表的列名称。 17 unique:是否唯一 18 nullable:是否可以为空 19 inserttable:是否可以插入 20 updateable:是否可以更新 21 columnDefinition: 定义建表时创建此列的DDL 22 secondaryTable: 从表名。如果此列不建在主表 23 @OneToMany 24 建立一对多的关系映射 25 @ManyToOne 26 建立多对一的关系 27 @JoinColumn 28 用于定义主键字段和外键字段的对应关系 29 @ManyToMany 30 用于映射多对多关系 31 @JoinTable 32 针对中间表的配置
2.4、Spring MVC 注解 (待后续更新)
2.5、Mybatis 注解 (待后续更新)
3、自定义注解
尴尬了,我也不会