package com.sf.service.impl;


import com.sf.mapper.UserMapper;
import com.sf.service.UserService;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

/**
 * @author WanJl
 * @version 1.0
 * @title UserServiceImpl
 * @description
 * @create 2025/11/30
 */
//添加一个注解：Component
/*
@Component 注解及其所有子注解的作用，就是把它修饰的类，创建对象注入到IOC容器作为bean
@Component包含三个衍生注解：
    @Controller 用来修饰控制层的bean
    @Service 用来修饰服务层的bean
    @Repository 用来修饰持久层的bean
 */
@Service
@Scope("singleton") //定义bean的作用范围
//设置它的生命周期
public class UserServiceImpl implements UserService, InitializingBean, DisposableBean {
    //@Autowired 根据类型进行自动装配(自动的建立bean和bean之间的关系)
    @Autowired  //默认是根据类型进行装配的
    @Qualifier("userMapper")    //根据名称进行自动装配，要搭配@Autowired一起使用
    private UserMapper userMapper;
    /*
        DI依赖注入的方式
            构造方法注入
            setter方法注入
            自动装配---使用的暴力反射
    */

    @Override
    public void print() {
        System.out.println("userServiceImpl");
        userMapper.print();
    }

    @Override
    public void destroy() throws Exception {
        System.out.println("userServiceImpl destroy");
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("UserServiceImpl afterPropertiesSet");
    }
}
