当前位置: 首页 > 后端技术 > Java

SpringIOC控制反转

时间:2023-04-02 01:37:51 Java

控制反转IOC(InversionofControl)代码结构//mapperpublicinterfaceUserDao{StringgetUser();}//mapper实现张三publicclassUserDaoImplimplementsUserDao{@OverridepublicStringgetUser(){return"张三22岁";}}//mapperimplements李斯publicclassUserDao2ImplimplementsUserDao{@OverridepublicStringgetUser(){return"李斯22岁";}}//servicepublicinterfaceUserService{StringgetUser();}普通对象注入(服务实现)//实现publicclassUserServiceImplimplementsUserService{privateUserDaouserDao=newUserDaoImpl();@OverridepublicStringgetUser(){returnuserDao.getUser();}}//调用publicclassUserTest{publicstaticvoidmain(String[]args){UserServiceuserService=newUserServiceImpl();System.out.println(userService.getUser());}}引入UserDaoImpl让它获取张三的信息这时候看上面的代码我们的测试类获取张三的信息。如果需要获取李四的信息,需要将导入的对象修改为privateUserDaouserDao=newUserDao2Impl();这时,对象的创建权就掌握在程序员手中了。如果用户的需求发生变化,则需要修改源代码。设置方法对象注入//实现publicclassUserServiceImplimplementsUserService{privateUserDaouserDao;publicvoidsetUserDao(UserDaouserDao){this.userDao=userDao;}@OverridepublicStringgetUser(){returnuserDao.getUser();}}//调用publicclassUserTest{publicstaticvoidmain(String[]args){UserServiceuserService=newUserServiceImpl();((UserServiceImpl)userService).setUserDao(newUserDao2Impl());System.out.println(userService.getUser());}}让用户通过set选择创建对象的类型,将创建对象的权力赋予用户,无需修改源代码。此时,程序本身就从主动创建对象变成了被动接收对象。降低了系统的耦合度,可以更加专注于业务的实现。所以IOC其实只是一个想法,也就是所谓的控制反转。Spring管理服务实现类:publicclassUserServiceImplimplementsUserService{privateUserDaouserDao;publicvoidsetUserDao(UserDaouserDao){this.userDao=userDao;}privateUserDaouserDao1;publicvoidsetUserDao1(UserDaouserDao1){this.userDao1=userDao1;@OverridepublicStringgetUser(){returnuserDao.getUser();}@OverridepublicStringgetUser1(){returnuserDao1.getUser();}}名为beans.xml的文件放在资源文件resources下:调用类:publicclassTest{publicstaticvoidmain(String[]args){ApplicationContextcontext=newClassPathXmlApplicationContext("beans.xml");UserServiceuserService=(UserService)context.getBean("userService");System.out.println(userService.getUser());//李四System.out.println(userService.getUser1());//张三}}此时对象的创建、管理、组装都交给了Spring来管理。如果用户需要,可以通过更改的方式修改配置文件,而无需修改源代码。