Spring的IOC(控制反转)与DI(依赖注入) --注解

注解实现对象的创建和注入

前言

XML配置实现对象的创建和注入见上一篇文章《Spring的IOC(控制反转)与DI(依赖注入) --XML配置》,这里主要讲述如何使用注解实现spring对对象的创建和注入

1、编写Service代码
@Service(value = "userService")   //这个注解和Component没啥区别 只是语义化了 功能还是Component

//@Component(value = "userService")        //这个注解的意思就是将当前类的对象 放到IOC容器中去
//默认情况下 这个类的对象放到IOC容器中的这个对象的名字就是当前类的名字的首写字母小写
// 后面的value是可以省略 省略的情况和上面是一样的  如果设置了值 那么这个类对象的名字 就是你设置的值
@Scope(scopeName = "singleton")  //这个注解的作用就是设置 单例 和多例
@Lazy(value = false)    //是否懒加载的问题
public class UserService {


//    @Autowired    //这个注解是先通过类型去IOC中找对象 对象没有 再通过名字 找 如果都没有找到 报错
    @Resource       //先通过名字找(IOC容器中找) 再通过类型找对象  如果都没有找到 报错
    private IUserDAO userDAO;


    public void setUserDAO(UserDAO userDAO) {
        this.userDAO = userDAO;
    }

    @PostConstruct   //这个注解就是当一个对象放到IOC容器去的时候 要进行初始化操作
    public void init(){
        System.out.println("初始化操作");
    }

    public void print(){
        userDAO.print();
    }


    @PreDestroy       //对象要被销毁的时候要进行资源回收的操作  就使用这个
    public void destory(){
        System.out.println("destory");
    }
}

2、编写DAO代码
//@Component
@Repository(value = "userDAOaaaaaaa")   //这个功能还是Component的功能只是语义化了 在DAO层 一般情况下 就使用 @Repository这个注解
public class UserDAO implements IUserDAO{

    public void print() {
        System.out.println("DAO被执行了....");
    }
}

3编写配置文件
 <!--告诉咋们的Spring 需要扫描的包的路径
        这里只需要告诉他 扫描那个包下面的注解就可以了
    -->
    <context:component-scan base-package="com.qf.spring.annotation"></context:component-scan>

4编写测试文件
    public static void main(String[] args){
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:bean-base-di-annotation.xml");
        context.start();
        UserService userService = (UserService) context.getBean("userService");
        userService.print();
        context.close();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦及海深@无

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值