- @Configuration:配置类注解,使用该注解的类为一个配置类,其中用于定义交给Spring管理的各个方法
- @Bean:对象注解
- 该注解只能在方法上使用,作用是将方法的返回值交个Spring管理
- 对象名默认为方法名,也可以在Bean注解中指定对象名 @Bean("对象名")
- @ComponentScan("com.jiazhong.dao.impl"):
- 组件扫描器注解
- 该注解会自动扫描指定包中的所有类,并将扫描到的类中带有Component注解的类管理起来
- @Component;是Spring的组件注解
- 该注解表示交给Spring管理
- 对象名默认为类名首字母小写,如类名为UserDaoImpl,则默认对象名为userDaoImpl
- 如需要自定义对象名则在注解后加上对象名即可,如@Component("对象名")
- @Service("useService"):Spring的服务层对象注解,它和@Component注解功能一样,只是语义更加明确
- 在Service层使用该注解
- @Repository("userDao1"):Spring的持久层注解,它和@Component注解功能一样,只是语义更加明确
- 在持久层使用该注解
- @Autowired:自动注入注解,该注解可以在属性、set方法和构造方法上使用
- 该注解默认按照对象名装配若对象名不存在按照类型装配
- 如果存在多个相同类型的对象且对象名不匹配则无法自动装配,此时可以使用@Qualifier("userDao")精准指定要装配的对象名
- @Qualifier:该注解与 @Autowired注解搭配使用
- 该注解用于精确指定要注入的对象的对象名
-----SpringAOP注解-------
- @Aspect:切面注解,在类上使用,表示该类为一个切面
- @EnableAspectJAutoProxy:启动springAOP的自动代理功能
- @Pointcut():切入点表达式注解,通过切入点表达式对要拦截的方法进行描述
- @Before("切入点"):前置通知注解
- @AfterReturning("切入点"):后置通知注解
- @AfterThrowing("切入点"):异常通知注解
- @After("切入点"):最后通知注解
- @Around("切入点"):环绕通知注解
-------自定义注解-------
-
- 注解可以使用在类,方法,构造方法、属性、参数等位置
-
- 在实际使用中如果只是单一的使用注解没有太多意义,注解一般配合反射使用
-
- 每个注解后都存在一套功能处理类一般使用反射对注解进行解析并进行相应的功能处理
-
- JDK为我们提供了一些标准的注解,在使用各种框架技术时,也提供了各种注解,但如果系统中没有提供我们所需要的注解,则可以自定义注解
-
- 要自定义注解首先要了解JDK提供的元注解(定义注解时需要使用的注解)
- (1) @Retention:该注解用于定义注解的作用域(起作用的范围),常用的几个属性,这些属性是RetentionPolicy枚举中定义的常量
- SOURCE:只能在源码中使用
- CLASS:在字节码中使用
- RUNTIME:在运行时使用(进入虚拟机),该作用域的注解可以通过反射解析
- (2) @Target:该注解用于指定注解允许使用的位置,如类上面、方法上面、属性上面、构造器上面、参数上面
- Target注解指定的位置通过ElementType枚举指定
- 常用属性:
- TYPE:允许在类、接口、枚举上面使用
- FIELD:允许在属性上使用
- METHOD:允许在方法上使用
- PARAMETER:允许在参数上使用
- CONSTRUCTOR:允许在构造方法上使用
- ANNOTATION_TYPE:允许在注解上使用
- PACKAGE:允许在包上面使用
- (3) @Documented:标注这些注解是否包含在用户文档中
- (4) @Inherite:标注这个注解是继承与哪个注解
-----自定义注解的使用-------
-
- 声明注解的关键字@interface
- public @interface OperateLogAnnotation {
- }
-
- 注解中使用属性的原则:
- (1) 属性是方法声明:public String value();
- (2) 属性的权限只能是"public"或"默认的"不能为其他
- (3) 如果只存在一个属性,建议使用value属性名,则在注解使用时直接传值即可
- -value属性是注解的默认属性
- (4) 如果属性需要设置默认值,则通过default设置
- String value() default "";
- (5) 如果注解中存在多个属性,则在使用注解时,需要使用"属性名=属性值"方式传值