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})
Spring中的一些常用注解相关推荐
- 详解Spring中@Autowire,@Value 注解实现原理
点击关注公众号,实用技术文章及时了解 来源:blog.csdn.net/u013202238/article/details/107879726 本文主要基于SpringBoot-2.3.3.RELE ...
- spring boot之Spring Mvc开发和常用注解说明
spring boot之Spring Mvc开发和常用注解说明 Spring boot主要用于开发微服务接口.所以采用的控制层注解主要是restful形式. 创建微服务: 与上一篇文章一致. 依赖多一 ...
- Spring中重要的一些注解及其实现原理
Spring中重要的一些注解及其实现原理 1.启动类@SpringBootApplication注解: @SpringBootApplication public class StartEurekaA ...
- 【Spring】ioc的常用注解
背景 注解配置和Xml配置要实现的功能都是降低程序间的耦合.只是配置的形式不一样. 注解 曾经的XML配置 <bean id="accountService" class=& ...
- spring学习笔记04-IOC常用注解(一)
文章目录 2.3常用注解 2.3.1 用于创建对象的 2.3.1.1 @Component 2.3.1.2 @Controller @Service @Repository 2.3.2 用于注入数据的 ...
- SSM框架之Spring MVC(二)常用注解说明
一.常用注解 1.1RequestParam 1.1.1 使用说明 作用: 把请求中指定名称的参数给控制器中的形参赋值. 属性: value:请求参数中的名称. required:请求参数中是否必须 ...
- Spring中的18个注解,你会几个?
点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 作者:Java的小本家 @Controller 标识一个该类是Spring MVC contr ...
- 【Spring MVC学习】详解spring mvc 3.0常用注解
Spring mvc的注解功能 1.@Controller--表示控制器 举例: @Controller public class SoftCreateController extendsSimple ...
- spring学习笔记05-IOC常用注解(二)
文章目录 2.3 关于 Spring 注解和 XML 的选择问题 2.4spring 管理对象细节 2.5spring 的纯注解配置 2.5.1 待改造的问题 2.5.2 新注解说明 2.5.2.1 ...
最新文章
- 华为新系统鸿蒙升级平板名单,华为鸿蒙系统升级名单正式确认!全面替换安卓:流畅度比肩iOS...
- java stringBuilder的用法
- Leetcode 141.环形链表 (每日一题 20210617)
- 项目正式环境是双机,对外的访问地址是虚拟地址,在登录门户的时候,会等待15秒,才能进入门户...
- sudo with no password
- byte java byte_详解java中的byte类型
- I begin to keep a daily
- java冒泡排序经典代码6_经典排序算法之冒泡排序
- mvc html绑定变量,c# – Asp.Net MVC 3使用变量对象进行自定义模型绑定
- PHPCMS之 列表和内容页
- Apache与Subversion的简单配置(Apache SVN版本控制)
- 中国水系Android第一个版本
- 一起学习PySNMP——理解什么是MIB
- Java 100以内的质数
- 蓄力-利用POI进行excel的导入导出(包含图片)
- 好分数一个等第是什么意思_DPI是什么意思 鼠标DPI越高越好吗?
- matlab pwm整流仿真
- 支持HEVC/H265 RTMP接收的FFMPEG/FFPLAY WINDOWS版本
- Golang 中 map 探究
- win10---血战上海滩