Spring常⽤注解(绝对经典),全靠这份Java知识点PDF⼤全
@Bean
public ColorFactoryBean colorFactoryBean(){
return new ColorFactoryBean();
}
//创建⼀个spring定义的FactoryBean
public class ColorFactoryBean implements FactoryBean {
//返回⼀个Color对象,并将Color添加到容器中
public Color getObject() throws Exception {
System.out.println(“ColorFactoryBean,getObject()”);
return new Color();
}
public Class<?> getObjectType() {
return Color.class;
}
public boolean isSingleton() {
return false;
}
}
2、注⼊bean的注解
@Autowired:由bean提供
@Autowired可以作⽤在变量、setter⽅法、构造函数上;
有个属性为required,可以配置为false;
@Inject:由JSR-330提供
@Inject⽤法和@Autowired⼀样。
@Resource:由JSR-250提供
@Autowired、@Inject是默认按照类型匹配的,@Resource是按照名称匹配的,@Autowired如果需要按照名称匹配需要和@Qualifier⼀起使⽤,@Inject和@Name⼀起使⽤。
@Primary
让spring进⾏⾃动装配的时候,默认使⽤⾸选的bean,和@Qualifier⼀个效果。
3、@JsonIgnore
(1)作⽤
在json序列化时将java bean中的⼀些属性忽略掉,序列化和反序列化都受影响。
⼀般标记在属性或者⽅法上,返回的json数据即不包含该属性。
(3)注解失效
如果注解失效,可能是因为你使⽤的是fastJson,尝试使⽤对应的注解来忽略字段,注解为:@JSONField(serialize = false),使⽤⽅法⼀样。
4、初始化和销毁⽅法
(1)通过@Bean(initMethod=“init”,destoryMethod=“destory”)⽅法
(2)通过bean实现InitializingBean来定义初始化逻辑,DisposableBean定义销毁逻辑
(3)可以使⽤JSR250:@PostConstruct:初始化⽅法;@PreDestory:销毁⽅法。
(4)BeanPostProcessor:bean的后置处理器,在bean初始化前后进⾏⼀些处理⼯作
postProcessBeforeInitialization:在初始化之前⼯作;
postProcessAfterInitialization:在初始化⼯作之后⼯作;
5、Java配置类相关注解
@Configuration
声明当前类为配置类;
@Bean
注解在⽅法上,声明当前⽅法的返回值为⼀个bean,替代xml中的⽅式;
@ComponentScan
⽤于对Component进⾏扫描;
6、切⾯(AOP)相关注解
Spring⽀持AspectJ的注解式切⾯编程。
@Aspect 声明⼀个切⾯
@After 在⽅法执⾏之后执⾏(⽅法上)
@Before 在⽅法执⾏之前执⾏(⽅法上)
@Around 在⽅法执⾏之前与之后执⾏(⽅法上)
@PointCut 声明切点
在java配置类中使⽤@EnableAspectJAutoProxy注解开启Spring对AspectJ代理的⽀持
7、@Bean的属性⽀持
@Scope设置类型包括:
设置Spring容器如何新建Bean实例(⽅法上,得有@Bean)
① Singleton
(单例,⼀个Spring容器中只有⼀个bean实例,默认模式),
② Protetype
(每次调⽤新建⼀个bean),
(web项⽬中,给每个http request新建⼀个bean),
④ Session
(web项⽬中,给每个http session新建⼀个bean),
⑤ GlobalSession
(给每⼀个 global http session新建⼀个Bean实例)
8、@Value注解
(1)⽀持如下⽅式的注⼊:
注⼊普通字符
注⼊操作系统属性
注⼊表达式结果
注⼊其它bean属性
注⼊⽂件资源
注⼊⽹站资源
注⼊配置⽂件
(2)@Value三种情况的⽤法。
1. ${}是去外部配置的参数,将值赋过来
2. #{}是SpEL表达式,去寻对应变量的内容
3. #{}直接写字符串就是将字符串的值注⼊进去
9、环境切换
@Profile
指定组件在哪个环境的情况下才能被注册到容器中,不指定,任何环境下都能注册这个组件。
@Conditional
通过实现Condition接⼝,并重写matches⽅法,从⽽决定该bean是否被实例化。
10、异步相关
@EnableAsync
配置类中通过此注解开启对异步任务的⽀持;
@Async
在实际执⾏的bean⽅法使⽤该注解来声明其是⼀个异步任务(⽅法上或类上所有的⽅法都将异步,需要@EnableAsync开启异步任务)11、定时任务相关
@EnableScheduling
在配置类上使⽤,开启计划任务的⽀持(类上)
来申明这是⼀个任务,包括cron,fixDelay,fixRate等类型(⽅法上,需先开启计划任务的⽀持)
12、Enable***注解说明
这些注解主要是⽤来开启对xxx的⽀持:
@EnableAspectAutoProxy:开启对AspectJ⾃动代理的⽀持;
@EnableAsync:开启异步⽅法的⽀持;
@EnableScheduling:开启计划任务的⽀持;
@EnableWebMvc:开启web MVC的配置⽀持;
@EnableConfigurationProperties:开启对@ConfigurationProperties注解配置Bean的⽀持;
@EnableJpaRepositories:开启对SpringData JPA Repository的⽀持;
@EnableTransactionManagement:开启注解式事务的⽀持;
@EnableCaching:开启注解式的缓存⽀持;
13、测试相关注解
@RunWith
运⾏器,Spring中通常⽤于对JUnit的⽀持
@ContextConfiguration
⽤来加载配置配置⽂件,其中classes属性⽤来加载配置类。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {“classpath* *.xml”})
public class CDPlayerTest {
}
@ContextConfiguration这个注解通常与@RunWith(SpringJUnit4ClassRunner.class)联合使⽤⽤来测试。
@ContextConfiguration括号⾥的locations = {“classpath* *.xml”}就表⽰将classpath路径⾥所有的xml⽂件都包括进来,⾃动扫描的bean就可以拿到,此时就可以在测试类中使⽤@Autowired注解来获取之前⾃动扫描包下的所有bean。
14、@EqualsAndHashCode
任意类的定义都可以添加@EqualsAndHashCode注解,让lombok帮你⽣成equals(Object other)和hashCode()⽅法的实现。默认情况下会使⽤⾮静态和⾮transient型字段来⽣成,但是你也通过在字段上添加 @EqualsAndHashCode.Include 或者
@EqualsAndHashCode.Exclude 修改你使⽤的字段(甚⾄指定各种⽅法的输出)。或者你也可以通过在类上使⽤
@EqualsAndHashCode(onlyExplicitlyIncluded = true) ,且在特定字段或特定⽅法上添加 @EqualsAndHashCode.Include 来指定他们。
如果将@EqualsAndHashCode添加到继承于另⼀个类的类上,这个功能会有点棘⼿。⼀般情况下,为这样的类⾃动⽣
成equals和hashCode⽅法是⼀个坏思路,因为超类也有定义了⼀些字段,他们也需要equals/hashCode⽅法但是不会⾃动⽣成。通过设置callSuper=true,可以在⽣成的equals和hashCode⽅法⾥包含超类的⽅法。对于hashCode,·super.hashCode()·会被包含在hash 算法内,⽽对于equals,如果超类实现认为它与传⼊的对象不⼀致则会返回false。注意:并⾮所有的equals都能正确的处理这样的情况。然⽽刚好lombok可以,若超类也使⽤lombok来⽣成equals⽅法,那么你可以安全的使⽤它的equals⽅法。如果你有⼀个明确的超类, 你得在callSuper上提供⼀些值来表⽰你已经斟酌过,要不然的话就会产⽣⼀条警告信息。
当你的类没有继承⾄任何类(⾮java.lang.Object, 当然任何类都是继承于Object类的),⽽你却将callSuer置为true, 这会产⽣编译错误(译者注: java: Generating equals/hashCode with a supercall t
o java.lang.Object is pointless. )。因为这会使得⽣成
的equals和hashCode⽅法实现只是简单的继承⾄Object类的⽅法,只有相同的对象并且相同的hashCode才会判定他们相等。若你的类继承⾄另⼀个类⼜没有设置callSuper, 则会产品⼀个告警,因为除⾮超类没有(或者没有跟相等相关的)字段,否则lombok⽆法为你⽣成考虑超类声明字段的实现。
15、XmlAccessorType
类级别的注解
定义这个类中何种类型需要映射到XML。
1. XmlAccessType.FIELD:映射这个类中的所有字段到XML
2. XmlAccessType.PROPERTY:映射这个类中的属性(get/set⽅法)到XML
3. XmlAccessType.PUBLIC_MEMBER:将这个类中的所有public的field或property同时映射到XML(默认)
4. XmlAccessType.NONE:不映射
16、@SuppressWarnings
Suppress 抑制;镇压;废⽌ Warnings警告
@SuppressWarnings(“resource”)是J2SE 提供的⼀个批注。该批注的作⽤是给编译器⼀条指令,告诉它对被批注的代码元素内部的某些警告保持静默。
@SuppressWarnings 批注允许您选择性地取消特定代码段(即,类或⽅法)中的警告。其中的想法是当您看到警告时,您将调查它,如果您确定它不是问题,您就可以添加⼀个 @SuppressWarnings 批注,以使您不会再看到警告。
虽然它听起来似乎会屏蔽潜在的错误,但实际上它将提⾼代码安全性,因为它将防⽌您对警告⽆动于衷 — 您看到的每⼀个警告都将值得注意。
三、SpringMVC常⽤注解
1、@EnableWebMvc
在配置类中开启Web MVC的配置⽀持。
2、@Controller
3、@RequestMapping
⽤于映射web请求,包括访问路径和参数。
4、@ResponseBody
⽀持将返回值放到response内,⽽不是⼀个页⾯,通常⽤户返回json数据。
5、@RequestBody
允许request的参数在request体中,⽽不是在直接连接的地址后⾯。(放在参数前)
6、@PathVariable
⽤于接收路径参数,⽐如@RequestMapping(“/hello/{name}”)声明的路径,将注解放在参数前,即可获取该值,通常作为Restful的接⼝实现⽅法。
7、@RestController
>springmvc常用标签
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论