栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

@Autowired 作用初步了解笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

@Autowired 作用初步了解笔记

test测试类:

@Test
public void test1(){
    UserService userService = (UserService) applicationContext.getBean("userServiceImpl");//拿到接口
    userService.addUser();//拿到userService的实现接口
}

UserService.java:

public interface UserService{
    void addUser();
}

走UserService接口实现类的方法

@Service //实例化当前对象,存入Spring容器,以UserServiceImp为名称
public class UserServiceImp implements UserService{
    private UserDao userDao;
    
    @Override
    public void addUser(){
        userDao.addUser();
    }
    public UserDao getUserDao(){
        return userDao;
    }
    public void setUserDao(UserDao userDao){
        this.userDao = userDao;
    }
}

掉public void addUser()方法。userDao.addUser();在往下走

public interface UserDao{
    void addUser();
}

走UserDao接口实现类:

public class UserDaoImp implements UserDao{
    @Override
    public void addUser(){
        System.out.println("Dao层添加数据库");
    }
}
首先UserService能打理掉这个addUser()方法的前提就是:UserServiceImp对象通过@Service注释new出来了。但是其中私有属性UserDao并没有new出来。若在application.xml里并没有bean标签(例如),没办法说什么设值注入。这种场景下怎么用注解把UserDao这个属性注入进来?

首先UserDao这个对象得new出来再说userDao的实现类是谁?
@Repository	//仓库的意思	
//什么意思?就是把UserDaoImp  new出来了
public class UserDaoImp implements UserDao{
    @Override
    public void addUser(){
        System.out.println("Dao层添加数据库");
    }
}

因为@Service会把UserDaoImp对象存入Spring容器,存入Spring容器之后嘞?

就意味着UserDaoImp这个实现类在容器里面有了

在容器里有了后只要在UserServiceImp.java中需要一个@Autowired注解就可以了

@Service //实例化当前对象,存入Spring容器,以UserServiceImp为名称
public class UserServiceImp implements UserService{
    @Autowired
    private UserDao userDao;
    
    ....
}

*这里只是有test测试类调用举例,在实际开发中也同样适用

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/445894.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号