Spring注解
1)@Component
作用:调用无参构造函数创建一个bean对象,并把对象存入spring的ioc容器,并交由spring容器进行管理,相当于在xml中配置一个<bean>。
属性:value:id默认按照当前bean的类名,首字母小写,可以在使用时指定value名称。
2)@Repository
作用:与@Component注解相同,只是用于区别持久层。
3)@Service
作用:与@Component注解相同,只是用于区别业务逻辑层。
4)@controller
作用:与@Component注解相同,只是用于区别控制访问层。
5)@Bean
作用:用于把当前方法的返回值作为bean对象存入spring的ioc容器中,等价于spring的xml配置文件中的<bean>,不同的是作用于方法上。
属性:可以通过配置initMethod来指定bean的初始化方法,destroyMethod指定bean销毁时的方法,value指定bean被注册到IOC容器的id。
6)@Configuration
作用:配置spring容器(应用上下文),@Configuration底层是含有@Component ,所以@Configuration 具有和 @Component 的作用,相当于spring的xml里面的<beans>。
7)@ComponentScan
作用:@ComponentScan主要就是定义扫描的路径从中找出标识了需要装配的类自动装配到spring的bean容器中,相当于xml中的 <context:component-scan>。
属性:可以通过value指定需要扫描的包的数组,比如:@ComponentScan({"com.star.mapper","com.star.controller","com.star.serviec"})
8)@Scope
作用:模式声明(singleton|prototype)默认为单例模式,指定bean的作用范围。
属性:可以通过value指定bean的范围。
9)@Autowired
作用:将从spring容器中按类型查找到指定的bean并且自动装配到指定位置。@Autowired默认按照类型装配,如果想要按照名称装配,需要结合@Qualifier注解使用。
属性:可以通过required指定true|false,是否强制注入bean,默认true。
10)@Qualifier
作用:在自动按照类型注入的基础之上,再按照bean的id注入。它在给字段注入时不能独立使用,必须和@Autowired注解一起使用;但是在给方法参数注入时,可以独立使用。
属性:value:指定bean的id。
11)@Transactional
作用:为当前类或方法添加一个事务。
属性:可以通过readOnly属性指定true|false,是否是只读的事务。
12)@ContextConfiguration
作用:位于org.springframework.test.context包下,是为了方便junit单元测试使用,可以以指定的配置文件初始化spring上下文。
属性:locations指定一个配置文件数组:比如:@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
13)@Value
作用:通过@Value可以将外部的值动态注入到Bean中,可以为基本类型和String类型数据的变量注入数据,可作用于方法的参数。
属性:value:必须指定具体值。
14)@Primary
作用:自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常。
15)@Lazy
作用:用于指定该Bean是否取消预初始化,默认为true,用于注解类,延迟初始化。
属性:value:指定true|false,是否懒加载。
16)@Async
作用:用于方法的异步执行,被标注的方法将会开辟一个线程来执行,详情移步:这里。
属性:value:可以为异步执行器指定一个id,也可以不指定。
17)@RequestMapping
作用:此注解作用于类上表示窄化路径,比如(/user)那么这个类的所有请求方法的URL必须都带/user;作用于方法上表示为请求处理方法,前端可以通过此映射发起请求。
属性:name:表示要指定的路径值,value() 和 path()入参为数组,都可以用来映射请求URL。
18)@ModelAttribute
作用:此注解可作用于方法和参数上,用来表示非请求处理方法,注解用于将方法的参数或方法的返回值绑定到指定的模型属性上,并返回给Web视图,被@ModelAttribute注释的方法会在此controller每个方法执行前被执行,因此对于一个controller映射多个URL的用法来说,要谨慎使用。
属性:name和value:指定返回Model属性的名称。
19)@ResponseBody
作用:将返回结果直接转换为json串。
20)@JsonIgnore
作用:作用于注解、方法、构造器、字段上(最好作用于字段上),返回json串时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。
属性:value:默认为true ,为false则不生效。
21)@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
作用:返回json串时格式化字段,用在时间的格式化上。
属性:pattern:指定格式,timezone:指定时区GMT+8就是我们的时间。
22)@JsonProperty("param")
作用:该注解作用于字段、方法、参数上,用于在返回json时指定字段的别名。
属性:value:指定的别名,required:默认为false,为true强制指定。
23)@RestController
作用:相当于@Controller与@ResponseBody的结合,被注解的类将会当作一个controller注册到spring的上下文中,并且所有的方法返回值都将为json数据。
属性:value指定Controller的id。
J2EE注解
位于javax.annotation包下的注解
1)@Resource
作用:JDK1.6以后,用于依赖注入,作用与@Autowired注解相似,spring同样支持通过此注解来注入对象,但要明确这个注解不属于spring,参靠博客。
属性:name:指定bean的id,在注入依赖时,首先按照id查找bean,未找到再通过类型查找bean,未发现则报错。
2)@Generated
作用:用来标注源代码中的哪些东西是由某些工具生成的,而不是人写的,可以作用于包、类、方法、字段、构造函数、本地变量、方法参数。
属性:date:生成源代码的日期;value:指定包名数组;comments:包含的注释。
3)@PostConstruct
作用:指定作用与方法所在的bean初始化(实例化之后)时的动作,spring同样支持了此注解,只能有一个方法可以用此注释进行注释,方法不能有参数,返回值必需是void,方法需要是非静态的且只会执行一次。
4)@PreDestroy
作用:注解的方法在bean销毁时得到执行,与上述约束相同。
5)@NotNull
作用:JSR303中的注解,被注释的属性不可以为null。
6)@Size
作用:JSP303的注解,被注释的属性大小必须在所指定的范围内。
属性:max:最大值,min:最小值。
springBean生命周期
spring 容器中的 Bean 是有生命周期的,Spring 允许在 Bean 在初始化完成后以及 Bean 销毁前执行特定的操作,常用的设定方式有以下三种:
1.通过实现 InitializingBean/DisposableBean 接口来定制初始化之后/销毁之前的操作方法;
2.通过 <bean> 元素的 init-method/destroy-method属性指定初始化之后 /销毁之前调用的操作方法;
3.在指定方法上加上@PostConstruct 或@PreDestroy注解来制定该方法是在初始化之后还是销毁之前调用
但他们之前并不等价。即使3个方法都用上了,也有先后顺序.
Constructor > @PostConstruct >InitializingBean > init-method
参考博客:这里。