> 前期准备
- maven依赖的导入
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xx</groupId>
<artifactId>day03_spring_anno</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.9</version>
</dependency>
</dependencies>
</project>
- Spring配置文件的配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.xx.dao.impl"/>
<context:component-scan base-package="com.xx.service.impl"/>
</bean>
- Service层(相关注解,及引用类型值的注入)
@Component(value = "userServiceImpl")
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao = null;
@Override
public void save() {
userDao.saveData();
}
}
@Component : 此注解意为本实现类在程序运行初期将会实例化至SpringIOC容器中
value : 此属性为设置当前类的取用ID
相关的注解还有以下,作用与Component基本相同,之间有什么差别自行baidu
@Service : 业务层注解
@Repository :持久层注解
@Controller : 视图层注解
@Autowired : 单词意为自动接线,实际为自动获取本属性所需要的实现类,实现自动注入
需注入的变量userDao ,及其被注入的实现类UserDaoImpl必须都在SpringIOC容器中(下方图片为UserDaoImpl实现类)
当容器中出现一个持久层实现类UserDaoImpl变量名称可以随意,但是出现两个实现类后,SpringIOC容器在进行值注入时,就会产生报错
这时,就需要UserDao接口的变量名称与Dao层存入SpringIOC容器中的实现类的取用ID相同(下图中Repository注解中的value的值)
@Qualifier("userDao") :需与Autowired注解配合使用,默认属性名称为value,可不写value,其内的值为SpringIOC容器中实体类的ID
@Resource(name = "userDao") : 指定SpringIOC中存在的实体类注入当前注解的userDao变量中,本注解可单独使用(name关键字不可省略)
Dao层
@Repository :为持久层注解,注解内属性为value,可以不写属性名称,其value属性的属性值为SpringIOC容器实例化后的Id
@Scope :是springIoc容器中的一个作用域,在 Spring IoC 容器中具有以下几种作用域:
基本作用域singleton(单例)、
prototype(多例),
Web 作用域(reqeust、session、globalsession),自定义作用域
@Value(value = "abc") : 为基本类型和String进行赋值