Spring常用注解与J2EE注解总结

摘要:
Spring注解1)@Component作用:调用无参构造函数创建一个bean对象,并把对象存入spring的ioc容器,并交由spring容器进行管理,相当于在xml中配置一个。3)@Service作用:与@Component注解相同,只是用于区别业务逻辑层。9)@Autowired作用:将从spring容器中按类型查找到指定的bean并且自动装配到指定位置。J2EE注解位于javax.annotation包下的注解1)@Resource作用:JDK1.6以后,用于依赖注入,作用与@Autowired注解相似,spring同样支持通过此注解来注入对象,但要明确这个注解不属于spring,参靠博客。

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

Spring常用注解与J2EE注解总结第1张

作用:用来标注源代码中的哪些东西是由某些工具生成的,而不是人写的,可以作用于包、类、方法、字段、构造函数、本地变量、方法参数。

属性:date:生成源代码的日期;value:指定包名数组;comments:包含的注释。

3)@PostConstruct

作用:指定作用与方法所在的bean初始化(实例化之后)时的动作,spring同样支持了此注解,只能有一个方法可以用此注释进行注释,方法不能有参数,返回值必需是void,方法需要是非静态的且只会执行一次。

4)@PreDestroy

作用:注解的方法在bean销毁时得到执行,与上述约束相同。

5)@NotNull

作用:JSR303中的注解,被注释的属性不可以为null。

6)@Size

作用:JSP303的注解,被注释的属性大小必须在所指定的范围内。

属性:max:最大值,min:最小值。

springBean生命周期

Spring常用注解与J2EE注解总结第2张

spring 容器中的 Bean 是有生命周期的,Spring 允许在 Bean 在初始化完成后以及 Bean 销毁前执行特定的操作,常用的设定方式有以下三种:

1.通过实现 InitializingBean/DisposableBean 接口来定制初始化之后/销毁之前的操作方法;

2.通过 <bean> 元素的 init-method/destroy-method属性指定初始化之后 /销毁之前调用的操作方法;

3.在指定方法上加上@PostConstruct 或@PreDestroy注解来制定该方法是在初始化之后还是销毁之前调用

但他们之前并不等价。即使3个方法都用上了,也有先后顺序.

Constructor > @PostConstruct >InitializingBean > init-method

参考博客:这里

免责声明:文章转载自《Spring常用注解与J2EE注解总结》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇NETTY框架的使用python中的快速排序下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Spring声明式事务的配置~~~

/*2011年8月28日 10:03:30 by Rush  */ 环境配置 项目使用SSH架构,现在要添加Spring事务管理功能,针对当前环境,只需要添加Spring 2.0 AOP类库即可。添加方法: 点击项目右键->Build Path->Add librarys:  打开Add Libraries对话框,然后选定 MyEclipse...

Android开发——Android系统启动以及APK安装、启动过程

0. 前言   从Android手机打开开关,到我们可以使用其中的app时,这个启动过程到底是怎么样的?   1.  系统上电 当给Android系统上电,在电源接通的瞬间,CPU内的寄存器和各引脚均会被置为初始状态,CPU复位之后,程序指针会指向启动地址,从该地址读取并直接运行启动程序的可执行代码,或者将可执行代码与数据载入CPU内置的RAM中再运行。这...

Java Selenium3 WebDriver启动火狐、Chrome、IE,Edge浏览器的方法(一)

selenium3和selenium2没有太大的区别,就是精简了一些不用的东西,对浏览器的支持更好了,比如对高版本的浏览器(FireFox,Chrome,Edge等)可以完美的支持,不用受限于版本的问题 下面总结一下启动常用浏览器的方法 前提 安装好java的环境配置 新建一个maven工程 在maven的pom文件加入selenium的依赖包(版本可根...

日常编码规范(Java版)

规范: 命名: 接口命名。接口必须是名词,并且接口是能准确的描述要做的事情,命名能清晰的看出输入输出,可以是抽象的行为描述。接口必须以一个动作的名词形式结尾,比如reader,handler等。接口的命名,必须是抽象的,除非接口本身和具体实现紧密相关,否则不应该在接口中包含任何和具体实现相关的名词。接口命名根据行为分为以下几种: 读取某个数据,命名: {...

linux目录文件与系统启动(2)/etc系统初始化及设置相关重要文件

网卡配置文件 路径:/etc/sysconfig/network-scripts/ifcfg-ens33 ens33是你的网卡名称 图形化网络配置方式:nmtui 命令行网络配置方式:vi /etc/sysconfig/network-scripts/ifcfg-ens33 DNS配置文件:/etc/resolv.conf,基本废弃,由网卡设置里的DN...

关于Spring注解开发教程,打包全送你

摘要:spring是我们web开发中必不可少的一个框架,基于传统的xml方式配置bean总觉得太过繁琐,从spring2.5之后注解的出现可以大大简化我们的配置。 本文分享自华为云社区《如何高效提升Java开发效率—Spring注解开发全套教程!》,作者: 灰小猿。 一、使用注解标识组件 为了不再在IOC中一个个的声明类对象,首先根据每一个类的功能的不同...