Spring 注解
1. @Configuration
@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被
AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,
初始化Spring容器。
2.@Bean
@Bean是一个方法级别上的注解,主要用在@Configuration注解的类里,也可以用在@Component注解的类里。添加的
bean的id为方法名
@Scope 注解来指定使用@Bean定义的bean的作用域,name属性自定义bean id
3.@component
把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>
4.@controller
@Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了
该注解的类的方法。
通俗来说,被Controller标记的类就是一个控制器,这个类中的方法,就是相应的动作。
5.@Service
@Service("userService")注解是告诉spring,当Spring要创建UserServiceImpl的的实例时,bean的名字必须叫
做"userService",这样当Action需要使用UserServiceImpl的的实例时,就可以由Spring创建好的"userService",
然后注入给Action。
6.@Repository
@Repository(value="userDao")注解是告诉Spring,让Spring创建一个名字叫“userDao”的UserDaoImpl实例。 当Service需要使用Spring创建的名字叫“userDao”的UserDaoImpl实例时,就可以使用@Resource(name = "userDao")
注解告诉Spring,Spring把创建好的userDao注入给Service即可。
7.@Autowire
@Autowired可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作,我们也要清楚,@Autowired是
根据类型进行自动装配的。
元注解:负责注解其他注解,包括(@Target、@Retention、@Documented、@Inherited)
8.@Target
作用:用于描述注解的使用范围(即:被描述的注解可以用在什么地方)
取值:
1.CONSTRUCTOR :用于描述构造器
2.FIELD :用于描述域
3.LOCAL_VARIABLE :用于描述局部变量
4.METHOD :用于描述方法
5.PACKAGE :用于描述包
6.PARAMETER :用于描述参数
7.TYPE :用于描述类、接口、枚举
实例:
@Target(ElementType.TYPE)
public @interface Table{
//method
}
9.@Retention
作用:表示需要在什么级别保存该注释信息,用于描述注解的生命周期(即:被描述的注解在什么范围内有效)
取值:
1.SOURCE :源文件中有效
2.CLASS :在class文件中有效
3.RUNTIME :运行时有效(通过反射获取该注解的属性值)
例子:
@Target(ElementType.FIELD)
@Rentention(RententionPolicy.RUNTIME)
public @interface Colum{
//
}
10.Document
@Documented用于描述其它类型的annotation应该被作为被标注的程序成员的公共API,因此可以被例如javadoc此类的工具文档化。Documented是一个标记注解,没有成员。
11.Inherited
@Inherited 元注解是一个标记注解,@Inherited阐述了某个被标注的类型是被继承的。如果一个使用了@Inherited修饰的annotation类型被用于一个class,
则这个annotation将被用于该class的子类。
关于缓存的注解
12.@CacheConfig
一个类中多个缓存注解共享机制,包括 value,keygeneration
13.@CachePut
@CachePut 标注的方法执行前不去检测缓存中是否有之前执行的结果,而是每次都执行该方法,并将执行的结果以键值对的方式存入缓存。
应避免 @CachePut 与@Cacheable 同时使用
14.@CacheEvict
@CacheEvict 清理缓存,参数 allEntries 表示清除所有的元素,默认为false,当指定为 true ,表示清理所有的缓存(在执行方法之后清理)。
参数beforeInvocation为true表示执行方法之前清理
15.@Cacheable
@Cacheable 是声明方法是可以缓存的,将结果存储到缓存,使用相同的参数调用不需要执行实际的方法
16.@EnableCaching
@EnableCaching注解是spring framework中的注解驱动的缓存管理功能。自spring版本3.1起加入了该注解。如果你使用了这个注解,
那么你就不需要在XML文件中配置cache manager了。当你在配置类(@Configuration)上使用@EnableCaching注解时,会触发一个post processor,
这会扫描每一个spring bean,查看是否已经存在注解对应的缓存。如果找到了,就会自动创建一个代理拦截方法调用,使用缓存的bean执行处理。