zoukankan      html  css  js  c++  java
  • Spring常用注解与J2EE注解总结

    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

    参考博客:这里

  • 相关阅读:
    一个浏览器循环刷新网页的例子
    Ajax和JSON基础
    HTML-第三章构建模块小结
    HTML-元素属性
    入前端坑的第一天
    JZOJ 【2021.11.10NOIP提高组联考】
    LG P2633 Count on a tree
    JZOJ 7339.改试卷
    [CEOI2017] Building Bridges
    拉格朗日插值法
  • 原文地址:https://www.cnblogs.com/StarChen20/p/13949578.html
Copyright © 2011-2022 走看看