发表于: 2020-06-12 10:51:47
4 1584
今日作为:接口为什么能实例化?
只要有类实现了接口,接口就能实例化。。。。(书上竟然从来没讲过)
public class IoC {
@Test
public void iocTest(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao= (UserDao) applicationContext.getBean("VVV");
userDao.login();
}
}
public class IoC {
@Test
public void iocTest(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao= new UserDaoimpl();
userDao.login();
}
}
都能跑过。。。。
但是(UserDao)是什么意思?去掉了会报错2333 百度也查不到!!!
请教一下师兄。。。
UserDao userDao= (UserDao) applicationContext.getBean("VVV");
<bean id="VVV" class="com.jnshu.dao.UserDaoImpl"/>
<bean id="vvv" class="com.jnshu.dao.UserServiceImpl">
<property name="UserDao" ref="VVV"/>
</bean>
UserDaoImpl这个类的Bean id被我设成了VVV
然后UserServiceImpl Bean id被我设成了vvv
把VVV的属性UserDao通过setter方法注入到vvv
package com.jnshu.dao;
public class UserServiceImpl implements UserService{
private UserDao user233;
public void setUserDao(UserDao user233){
this.user233 = user233;
}
@Override
public void login() {
user233.login();
System.out.println("userService login");
}
}
那么问题来了????
UserDaoImpl它实现了接口UerDao,但是UserDaoImpl里面并没有一个属性叫UserDao啊!!!!!
public interface UserDao {
public abstract void login();
}
public class UserDaoImpl implements UserDao {
@Override
public void login() {
System.out.println("UserDao login");
}
}
请教一下师兄这是怎么回事???
public class UserServiceImpl implements UserService{
UserDao user233;
public void setUserDao(UserDao user123){
user233 = user123;
}
@Override
public void login() {
user233.login();
System.out.println("userService login");
}
}
还有就是UserDao在UserServiceImpl里面的对象 user233和在stter方法里面的作为形参的user123他们应该是栈内存不同,但是都是指向同一个堆内存地址吧???
public class UserServiceImpl implements UserService{
private UserDao user233;
public void setUserDao(UserDao user233){
this.user233 = user233;
}
@Override
public void login() {
user233.login();
System.out.println("userService login");
}
}
但是我要是改成同名,那他们不是都是一个栈内存么????
还有就是UserDao是个接口,他的对象应该也是接口怎么会实现的是UserDaoImpl里面的方法,难道Spring在幕后做了工作?
通过管理XML配置了UserDaoImpl的Bean,在用接口的时候Spring会自动找实现接口的类中的方法?然后注入?
所以这就是IoC和DI其实描述的是一个类的不同角度的证据?
也请教一下师兄。。。。
下午。。。。帮外派师兄去搬东西去了
下午热的燥的很,搞一会儿就发呆,基本算是摸鱼了
不知道明天能不能开空调,武汉这日子没空调已经要疯了!!!!
评论