目录

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})

Spring中的一些常用注解相关推荐

  1. 详解Spring中@Autowire,@Value 注解实现原理

    点击关注公众号,实用技术文章及时了解 来源:blog.csdn.net/u013202238/article/details/107879726 本文主要基于SpringBoot-2.3.3.RELE ...

  2. spring boot之Spring Mvc开发和常用注解说明

    spring boot之Spring Mvc开发和常用注解说明 Spring boot主要用于开发微服务接口.所以采用的控制层注解主要是restful形式. 创建微服务: 与上一篇文章一致. 依赖多一 ...

  3. Spring中重要的一些注解及其实现原理

    Spring中重要的一些注解及其实现原理 1.启动类@SpringBootApplication注解: @SpringBootApplication public class StartEurekaA ...

  4. 【Spring】ioc的常用注解

    背景 注解配置和Xml配置要实现的功能都是降低程序间的耦合.只是配置的形式不一样. 注解 曾经的XML配置 <bean id="accountService" class=& ...

  5. spring学习笔记04-IOC常用注解(一)

    文章目录 2.3常用注解 2.3.1 用于创建对象的 2.3.1.1 @Component 2.3.1.2 @Controller @Service @Repository 2.3.2 用于注入数据的 ...

  6. SSM框架之Spring MVC(二)常用注解说明

    一.常用注解 1.1RequestParam 1.1.1  使用说明 作用: 把请求中指定名称的参数给控制器中的形参赋值. 属性: value:请求参数中的名称. required:请求参数中是否必须 ...

  7. Spring中的18个注解,你会几个?

    点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 作者:Java的小本家 @Controller 标识一个该类是Spring MVC contr ...

  8. 【Spring MVC学习】详解spring mvc 3.0常用注解

    Spring mvc的注解功能 1.@Controller--表示控制器 举例: @Controller public class SoftCreateController extendsSimple ...

  9. spring学习笔记05-IOC常用注解(二)

    文章目录 2.3 关于 Spring 注解和 XML 的选择问题 2.4spring 管理对象细节 2.5spring 的纯注解配置 2.5.1 待改造的问题 2.5.2 新注解说明 2.5.2.1 ...

最新文章

  1. 华为新系统鸿蒙升级平板名单,华为鸿蒙系统升级名单正式确认!全面替换安卓:流畅度比肩iOS...
  2. java stringBuilder的用法
  3. Leetcode 141.环形链表 (每日一题 20210617)
  4. 项目正式环境是双机,对外的访问地址是虚拟地址,在登录门户的时候,会等待15秒,才能进入门户...
  5. sudo with no password
  6. byte java byte_详解java中的byte类型
  7. I begin to keep a daily
  8. java冒泡排序经典代码6_经典排序算法之冒泡排序
  9. mvc html绑定变量,c# – Asp.Net MVC 3使用变量对象进行自定义模型绑定
  10. PHPCMS之 列表和内容页
  11. Apache与Subversion的简单配置(Apache SVN版本控制)
  12. 中国水系Android第一个版本
  13. 一起学习PySNMP——理解什么是MIB
  14. Java 100以内的质数
  15. 蓄力-利用POI进行excel的导入导出(包含图片)
  16. 好分数一个等第是什么意思_DPI是什么意思 鼠标DPI越高越好吗?
  17. matlab pwm整流仿真
  18. 支持HEVC/H265 RTMP接收的FFMPEG/FFPLAY WINDOWS版本
  19. Golang 中 map 探究
  20. win10---血战上海滩

热门文章

  1. 解决Openwrt安装插件提示一下错误的办法
  2. [BUU刷题记录]day01-起步
  3. Android入门一:搭建Java开发环境
  4. Windows离线安装Rust
  5. C++语言程序设计课程设计任务书
  6. 42个面向前端开发人员的很棒JavaScript 库和框架
  7. ES7-ES11新特性汇总
  8. 那么这几天都是自己和工作上的事情比较零零散散
  9. 华为鸿蒙电视配置,华为旗下荣耀智慧屏PRO55英寸AI摄像头鸿蒙系统4K超清电视机...
  10. Oracle安装之1521端口及任何端口被占用错误