Spring注解式开发
Sping注解式开发
一、Bean声明的注解
- @Component
- @Service
- @Repository
- @Controller
⭐️:Service、Repository、Controller都是Component的别名,本质代码没有区别
名字的不同是为了方便语义化编程、见名知意
二、负责注入Bean参数的注解
-
@Value
-
- 当参数属性是简单类型的时候,可以使用@value进行注入
-
@Autowired
-
- 自动装载,根据类型自动装载复杂数据类型
-
@Qualifier
-
- 当Autowired根据参数名称匹配到多个实现类时,会报错
- 此时用@Qualifier指定装载某一个具体的实现类(根据名称)
-
@Resource
-
- 默认情况下根据名称来装载
- 当用名称找不到时,根据类型装载
- 如果是JDK8的话不需要额外引入依赖。高于JDK11或低于JDK8需要引入以下依赖。
1
2
3
4
5
6
7
8
9
10
11
12
13
<!-- spring6+ -->
<dependency>
<groupId>jakarta.annotation</groupId>
<artifactId>jakarta.annotation-api</artifactId>
<version>2.1.1</version>
</dependency>
<!-- spring5- -->
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>
三、完全抛弃xml配置文件
用类来配置Spring,不在写xml,通过注解来对Spring做配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package com.powernode.spring6.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ComponentScans;
import org.springframework.context.annotation.Configuration;
// 声明这是一个配置类
@Configuration
// 配置扫描加载bean的范围
@ComponentScan({"com.powernode.spring6.dao", "com.powernode.spring6.service"})
public class Spring6Configuration {
}
@Test
public void testNoXml(){
// 注意这里不再用ClassPathXmlApplicationContext了
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(Spring6Configuration.class);
UserService userService = applicationContext.getBean("userService", UserService.class);
userService.save();
}
本文由作者按照
CC BY 4.0
进行授权