Spring > 注解实现实体类的设置,引用类型值的注入,基本类型和String类型值的注入

> 前期准备

- 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">

    <!-- dao层实现类所在的包 -->
    <context:component-scan base-package="com.xx.dao.impl"/>
    <!-- service层实现类所在的包 -->
    <context:component-scan base-package="com.xx.service.impl"/>
</bean>

- Service层(相关注解,及引用类型值的注入)

@Component(value = "userServiceImpl")
// @Service(value = "userServiceImpl") // 和Component作用一样,但是有些细微的差别,Service为服务的意思,
public class UserServiceImpl implements UserService {
    
    
    @Autowired
    /** @Qualifier("userDao")
    @Resource(name = "userDao") **/
    private UserDao userDao = null;

    @Override
    public void save() {
    
    
    	// 模拟调用Dao层实现类进行数据的封装
        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进行赋值

猜你喜欢

转载自blog.csdn.net/weixin_43309893/article/details/119542856