Spring学习 Spring常用注解大全

目录

注解

xml和注解的理解

使用注解的前提★

常用注解

1、声明bean的注解

@Component 

@Service

@Repository

@Controller

2、注入bean的注解

@Autowired

@Qualifier

@Resource

@Value

3、改变作用范围的注解

@Scope 

4、生命周期相关的注解

@PostConstruct

@PreDestroy

5、切面(AOP)相关注解

@Aspect

@After

@Before

@Around

@PointCut

6、java配置类相关注解

@Configuration

@Bean

@Configuration

@ComponentScan

@WishlyConfiguration

7、环境切换

@Profile

@Conditional

8、异步相关

@EnableAsync

@Async

9、定时任务相关

@EnableScheduling

@Scheduled

10、@Enable*注解说明

11、测试相关注解

@RunWith

@ContextConfiguration


注解

注解的本身是没有功能的,就和 xml 一样。

注解和 xml 都是一种元数据,元数据即解释数据的数据,这就是所谓的配置。

xml和注解的理解

  • xml用来管理bean
  • 注解只负责完成属性的注入

使用注解的前提★

必须开启注解的支持


常用注解

1、声明bean的注解

@Component 

表示一个带注释的类是一个“组件”,成为Spring管理的Bean(一般用于把普通pojo实例化到spring容器中)。

@Controller和@Service和@Repository是它的特殊情况。

@Service

在业务逻辑层使用(service层),组合了@Component注解。

@Repository

在数据访问层使用(dao层),组合了@Component注解。

@Controller

用于标注控制层,表示向控制层注入服务层的数据,组合了@Component注解。

2、注入bean的注解

@Autowired

自动按照类型注入。只要容器中有唯一的一个bean对象类型和要注入的变量类型匹配,就可以注入成功。可以作用在变量或者方法上。

@Qualifier

在按照类型注入的基础之上再按照名称注入,它在给类成员注入时要和@Autowired配合使用,但是在给方法参数注入是可以单独使用。

@Resource

属性:name --- 用于指定bean的id。

直接按照bean的id注入,可以独立使用。

以上三种都可以注解在set方法和属性上,推荐注解在属性上(一目了然,少写代码)。

另外以上三个注入都只能注入其他bean类型的数据,而基本类型和String类型无法使用上述注解实现。同时,集合类型的注入只能通过xml来实现。

@Value

用于注入基本类型和String类型的数据。

用法:

1.${}是去找外部配置的参数,将值赋过来

  • 例如,@Value("${db.url}") 将会寻找外部配置文件中的名为 db.url 的属性,并将其值注入到对应的属性中。

2.#{}是SpEL表达式(也就是Spring中的el表达式),去寻找对应变量的内容,它可以用于动态计算值,包括对 bean 属性的引用、方法的调用、数学计算等。

  • 例如,@Value("#{systemProperties['java.home']}") 可以使用 SpEL 表达式动态获取系统属性 java.home 的值。

3、改变作用范围的注解

@Scope 

用于指定bean的作用范围。

其设置类型包括:

  • Singleton (单例,一个Spring容器中只有一个bean实例,默认模式)
  • Protetype (每次调用新建一个bean)
  • Request (web项目中,给每个http request新建一个bean)
  • Session (web项目中,给每个http session新建一个bean)
  • GlobalSession(给每一个 global http session新建一个Bean实例)

4、生命周期相关的注解

和在xml配置文件中的标签中使用init-method和destory-method属性实现的功能一样

@PostConstruct

  • 这个注解用于指定一个方法在 bean 初始化完成后立即执行。
  • 通常用于执行一些初始化操作,该方法在依赖注入之后、配置之前被调用。

@PreDestroy

  • 这个注解用于指定一个方法在 bean 销毁之前执行。
  • 通常用于释放资源或执行清理操作。

5、切面(AOP)相关注解

@Aspect

声明一个切面(使用在类上)

使用@After、@Before、@Around定义建言(advice),可直接将拦截规则(切点)作为参数

@After

在方法执行之后执行(使用在方法上)

@Before

在方法执行之前执行(使用在方法上)

@Around

在方法执行之前与之后执行(使用在方法上)

@PointCut

声明切点 在java配置类中使用@EnableAspectJAutoProxy注解开启Spring对AspectJ代理的支持(使用在类上)

6、java配置类相关注解

@Configuration

声明当前类为配置类,相当于xml形式的Spring配置(使用在类上)

@Bean

注解在方法上,声明当前方法的返回值为一个bean,替代xml中的方式(使用在方法上)

@Configuration

声明当前类为配置类,其中内部组合了@Component注解,表明这个类是一个bean(使用在类上)

@ComponentScan

用于对Component进行扫描,相当于xml中的(使用在类上)

@WishlyConfiguration

为@Configuration与@ComponentScan的组合注解,可以替代这两个注解

7、环境切换

@Profile

指定组件在哪个环境的情况下才能被注册到容器中,不指定,任何环境下都能注册这个组件。(使用在类或方法上)

@Conditional

Spring4中可以使用此注解定义条件话的bean,通过实现Condition接口,并重写matches方法,从而决定该bean是否被实例化。(使用在方法上)

8、异步相关

@EnableAsync

配置在类中,通过此注解开启对异步任务的支持,叙事性AsyncConfigurer接口

@Async

在实际执行的bean方法使用该注解来申明其是一个异步任务(方法上或类上所有的方法都将异步,需要@EnableAsync开启异步任务)

9、定时任务相关

@EnableScheduling

在配置类上使用,开启计划任务的支持(类上)

@Scheduled

来申明这是一个任务,包括cron,fixDelay,fixRate等类型(方法上,需先开启计划任务的支持)

10、@Enable*注解说明

这些注解主要用来开启对xxx的支持。

  • @EnableAspectJAutoProxy 开启对AspectJ自动代理的支持
  • @EnableAsync 开启异步方法的支持
  • @EnableScheduling 开启计划任务的支持
  • @EnableWebMvc 开启Web MVC的配置支持
  • @EnableConfigurationProperties 开启对@ConfigurationProperties注解配置Bean的支持
  • @EnableJpaRepositories 开启对SpringData JPA Repository的支持
  • @EnableTransactionManagement 开启注解式事务的支持
  • @EnableTransactionManagement 开启注解式事务的支持
  • @EnableCaching 开启注解式的缓存支持

11、测试相关注解

@RunWith

@RunWith 是 JUnit 框架提供的一个注解,它允许使用不同的运行器来运行测试类。在 Spring 测试中,通常会使用 SpringJUnit4ClassRunner.class,它是专门用于在测试中启用 Spring 容器支持的 JUnit 运行器。

import org.junit.runner.RunWith;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
public class MySpringTest {
    // Test methods
}

@ContextConfiguration

@ContextConfiguration 用于指定 Spring 上下文配置信息,告诉测试类在运行测试时应该加载哪些配置文件或者配置类。它可以指定 XML 配置文件路径或者配置类

import org.springframework.test.context.ContextConfiguration;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class MySpringTest {
    // Test methods
}

@ContextConfiguration这个注解通常与@RunWith(SpringJUnit4ClassRunner.class)联合使用用来测试。

你可能感兴趣的:(spring,学习,java)