Spring中的一些常用注解

目录

1. @Autowired

2. @Qualifier

3. @Resource

4. @Component

5. @Value

6. @Bean

7. 声明bean的几个注解

7.1 @Service

7.2 @Repository

7.3 @Controller

8. Java配置类的相关注解

8.1 @Configuration

8.2 @Bean

8.3 @ComponentScan

8.4 @WishlyConfiguration

9. 切面AOP的相关注解

9.1 @Aspect

9.2 @Before

9.3 @After

9.4 @Around

9.5 @PointCut

9.6 @EnableAspectJAutoProxy

10. 环境切换的相关注解

10.1 @Profile

10.2 @Conditional

11. 异步的相关注解

11.1 @EnableAsync

11.2 @Async

12. 定时任务的相关注解

12.1 @EnableScheduling

12.3 @Scheduled

13. Enable注解的说明

13.1 @EnableAspectJAutoProxy

13.2 @EnableAsync

13.3 @EnableScheduling

13.4 @EnableWebMvc

13.5 @EnableConfigurationProperties

13.6 @EnableJpaRepository

13.7 @EnableTransactionManagement

13.8 @EnableCaching

14. 测试的相关注解

14.1 @Runwith

14.2 @ContextConfiguration

【写在前面】

前文链接:SpringBoot项目中常用的几个注解

1. @Autowired

1.1 概念

(1)@Qualifier注入注解,是按类型自动装配的,不支持id匹配。

(2)需要导入Spring-aop依赖包。

(3)bean配置文件中设置<context:annotation-config />,放在<beans></beans>标签中。

(4)@Autowired(required=false)  //false, 对象可以为null;true, 对象必须存对象,不能为null。

1.2 示例

 

2. @Qualifier

2.1 概念

(1)@Qualifier注入注解

(2)@Autowired是根据类型自动装配的,加上@Qualifier则可以根据byName的方式自动装配。

(3)不能单独使用。    

2.2 示例

<!--配置文件中,保证类型存在对象,且名字不为类的默认名字-->
<bean id="book1" class="com.my.demo.Book">
<bean id="book2" class="com.my.demo.Book">
@Autowired
@Qualifier(value="book1")
private Book book1;

3. @Resource

3.1 概念

(1)注入注解。是J2EE提供的,需导入Package: javax.annotation.Resource;

(2)@Resource如有指定的name属性,先按该属性进行ByName方式查找装配;其次再进行默认的ByName方式进行装配。

(3)如果以上都不成功,则按byType的方式自动装配。

(4)都不成功,则报异常。        

3.2 示例

示例1:

<bean id="book1" class="com.my.demo.Book">
<bean id="book2" class="com.my.demo.Book">
@Resource(name = "book2")
private Book book;    //测试结果OK

示例2:

<bean id="book1" class="com.my.demo.Book">
@Resource
private Book book;    //测试结果OK

小结:

先进行name查找,如果失败,再进行byType查找,成功。

4. @Component

4.1 概念

(1)配置扫描哪些包下的注解。

(2)bean配置文件中指定注解要扫描的包 ,放在<beans></beans>标签中,如下:

<context: component-scan base-package="com.my.demo" />

(3)然后在指定包下编写类,类上添加@Component注解。

4.2 示例

可见,在xml配置文件中并没有配置bean的信息,通过@Component("user")让spring自动寻找User类。 

import org.springframework.bean.factory.annotation.Value;
import org.springframework.stereotype.Component;
 
@Component("user")     //相当于<bean id="user" class="com.my.demo" />
public class User{
    @Value("sheryl")
    public String name;
}
//在指定包下编写测试类
public static void main(String[] args){
 
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean4.xml");
    User user=(User)applicationContext.getBean("user"); 
    System.out.println(user.name);
 
}

5. @Value

5.1 概念

(1)@Value为属性注入值。放在属性上。

(2)支持如下方式的注入:

注入普通字符

注入操作系统属性

注入表达式结果

注入其他bean属性

注入文件资源

注入网站资源

注入配置文件   

5.2 示例

//注入普通字符
@Value("Sheryl")
String name;

//注入操作系统属性
@Value("#{systemProperties['os.name']}")
String name;

//注入表达式结果
@Value("#{demoClass.name}")
String name;

//注入其他bean属性
@Value("#{demoClass.name}")
String name;

//注入文件资源
@Value("classpath: C:/file/demo.txt")
String Resource file;

//注入网站资源
@Value("http://www.baidu.com")
Resource url;12;

//注入配置文件
@Value("${book.name}")
String bookName;

6. @Bean

6.1 概念

(1)@Scope设置Spring容器如何新建Bean实例(方法上,得有@Bean)。

(2)设置类型包括:

Singleton(单例,一个Spring容器中只有一个bean实例,默认模式)

Prototype(每次调用新建一个bean)

Request(Web项目中,给每个http request 新建一个bean)

Session(Web项目中,给每个http session新建一个bean)

GlobalSession(给每一个global http session 新建一个bean实例) 

(3)@StepScope 在Spring Batch中还有涉及。

(4)@PostConstruct 由JSR-250提供,在构造函数执行完之后执行,等价于在xml配置文件中bean的initMethod。

(5)@PreDestory 由JSR-250提供,在Bean销毁之前执行,等价于xml配置文件中的bean的destroyMethod。      

7. 声明bean的几个注解

7.1 @Service

在业务逻辑层使用(service层)

7.2 @Repository

在数据访问层使用(dao层)

7.3 @Controller

在展现层使用,控制器的声明(web层)

8. Java配置类的相关注解

8.1 @Configuration

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

其中内部组合了@Component注解,表明这个类是一个bean(类上)。

8.2 @Bean

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

8.3 @ComponentScan

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

8.4 @WishlyConfiguration

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

9. 切面AOP的相关注解

Spring支持AspectJ的注解式切面编程。

9.1 @Aspect

声明一个切面,放在类上。

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

9.2 @Before

在方法执行之前执行的,放在方法上。

9.3 @After

在方法执行之后执行的,放在方法上。

9.4 @Around

在方法执行之前和之后执行的,放在方法上。

9.5 @PointCut

声明切点。

9.6 @EnableAspectJAutoProxy

在Java配置类中使用该注解,开启Spring对AspectJ代理的支持,放在类上。

参考示例文章:

Java练习(十):Spring应用之AOP的@Before, @After操作(简单工程示例) Java练习(十九):编写代码,实现AOP的@Around操作 (两种写法)

10. 环境切换的相关注解

10.1 @Profile

通过设定Environment的ActiveProfiles来设定当前context需要使用的配置环境,放在类或方法上。

10.2 @Conditional

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

11. 异步的相关注解

11.1 @EnableAsync

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

11.2 @Async

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

12. 定时任务的相关注解

12.1 @EnableScheduling

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

12.3 @Scheduled

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

13. Enable注解的说明

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

13.1 @EnableAspectJAutoProxy

开启对AspectJ自动代理的支持

13.2 @EnableAsync

开启异步方法的支持

13.3 @EnableScheduling

开始计划任务的支持

13.4 @EnableWebMvc

开启Web Mvc的配置支持

13.5 @EnableConfigurationProperties

开启对@ConfigurationProperties注解配置Bean的支持

13.6 @EnableJpaRepository

开启对SpringData JPA Repository的支持

13.7 @EnableTransactionManagement

开启注解式事务的支持

13.8 @EnableCaching

开启注解式的缓存支持

14. 测试的相关注解

14.1 @Runwith

运行器,Spring中通常用语对Junit的支持。

比如:@Runwith(SpringJUnit4ClassRunner.class)

14.2 @ContextConfiguration

用来加载配置ApplicationContext, 其中classes属性用来加载配置类。

比如: @ContextConfiguration(classes={TestConfig.class})

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值