IOC(控制反转):就是程序员不用管new对象的事了,将new对象的任务交给框架来实现。
实现控制反转的方法有两种
1.配置文件管理,bean
2.注解
一、配置文件管理
1.选择resource下面的application.properties,new一个xml文件
2.在new了的xml文件里,写对应的bean
其中id作为名字,而class对应相应实现类的全限定类名
3.在测试类中利用Spring提供的方法读取配置文件,然后再根据xml bean中的id找到对应的类
4.这样就将创建对象的过程交给了框架
二、如何将一个项目中的new方法全部交给框架?
以上描述中,UserServiceIml中依然有new UserDao的方法,为了解决这个问题
1.利用构造函数
在配置文件中,利用constructor-arg,将下一个bean在UserService中实例化之后,将UserDao对象作为参数传递到UserServiceIml中的有参构造函数中。
2.利用Setter方法,通过在xml中在UserService bean中实例化UserDao,然后传值到UserServiceImpl方法中
二、注解方式实现IOC
用注解@Repository标记Dao层实现类,其实就是将此时的实现类的类名首字母小写作为id,然后将此个类的全限定类名作为value放到xml配置文件中。
用@Service标记Service层实现类;
当声明一个类,例如 private UserDao userDao;时,不用new了,前面加上@Autowired注解,实现自动new UserDao。
new UserDao的时候是按类名UserDao进行查找的,当类名一样时
解决方法:
-
@Resource(name = “userDaoImpl”),name是所new类的类名首字母小写
-
@Autowired
@Qualifier(“userDaoImpl2”)
Qualifier括号当中写所new 类的类名首字母小写Dao层实现类
Service层实现类
测试类调用