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

SpringXMLinjection_0

时间:2023-03-30 02:58:13 PHP

SpringXMLinjection依赖注入:从Spring容器中取出对象,注入到需要的地方。根据你需要了解的注入方式创建如下类。创建UserServiceImpl类packagecom.arno.service.impl;importcom.arno.dao.UserDao;importcom.arno.entity.User;importcom.arno.service.UserService;publicclassUserServiceImplimplementsUserService{privateUserDaouserDao;publicvoidsetUserDao(UserDaouserDao){this.userDao=userDao;}@OverridepublicbooleanaddUser(Useruser){System.out.println("UserSerivceImpl.addUser()");userDao.addUser(用户);返回假;}@OverridepublicbooleanupdateUser(Useruser){System.out.println("UserSerivceImpl.updateUser()");userDao.updateUser(用户);返回假;}}创建UserDaoImpl类packagecom.arno.dao.impl;importcom.arno.dao.UserDao;importcom.arno.entity.User;publicclassUserDaoImplimplementsUserDao{privateStringdriverClass;私有int端口;私有字符串数据库用户名;私有字符串数据库密码;publicvoidsetDriverClass(StringdriverClass){this.driverClass=driverClass;}publicvoidsetPort(intport){this.port=port;}公共无效setDbUserName(StringdbUserName){this.dbUserName=dbUserName;}publicvoidsetDbPassword(StringdbPassword){this.dbPassword=dbPassword;}@OverridepublicintaddUser(Useruser){System.out.println("UserDaoImpl.adduser()");System.out.println(driverClass+""+port+""+dbUserName+""+dbPassword);返回0;}@OverridepublicintupdateUser(Useruser){System.out.println("UserDaoImpl.updateuser()");返回0;}}创建消息类packagecom.arno.collection;importjava.util.List;importjava.util.Map;importjava.util.Properties;importjava.util.Set;publicclassMessage{privateListlist;私有集集;私人地图地图;私有属性道具;公共列表getList(){返回列表;}publicvoidsetList(Listlist){this.list=list;}publicSetgetSet(){返回集合;}publicvoidsetSet(Setset){this.set=set;}publicMapgetMap(){返回地图;}publicvoidsetMap(Mapmap){this.map=map;}publicPropertiesgetProps(){ret骨灰盒道具;}publicvoidsetProps(Propertiesprops){this.props=props;}@OverridepublicStringtoString(){return"Message[list="+list+",set="+set+",map="+map+",props="+props+"]";}}数据注入方式:setter方式注入:1.单值注入在xml中创建一个UserDaoImpl对象,并注入4个属性值2.对象注入创建一个UserDaoImpl对象在xml中,注入4个属性值,将对象命名为userDao,注入到下面名为userService的对象中3.集合注入(直接注入和间接注入)直接注入,创建Message对象,通过标签直接注入属性值北京上海广州北京上海广州北京上海广州间接注入,创建Hello对象和集合创建一个Message对象,通过标签北京上海广州北京上海广州北京上海广州4.属性注入(将属性文件中的数据注入到对象中)${}方法:创建mysql.properties文件(注意避免关键字)jdbc_driverClass=com.mysql.jdbc.Driverjdbc_url=jdbc:mysql://localhost:3306/tesdbjdbc_userName=rootjdbc_userPassword=root创建jdbcUtil1和jdbcUtil2类publicclassJDBCUtil1{privateStringdriverClass;私人字符串网址;私有字符串用户名;私有字符串用户密码;getter和setter(生成get/set方法)}通过${}获取mysql.properties的内容注入到jdbcUtil1对象中{}方法:通过#{}获取mysql.properties的内容,注入到jdbcUtil1对象中5.空valueinjectionType:""空字符串和null空指针创建Kong类包com.arno.kong;公共课Kong{privateStringstr1;私有字符串str2;publicStringgetStr1(){返回str1;}publicvoidsetStr1(Stringstr1){this.str1=str1;}publicStringgetStr2(){返回str2;}publicvoidsetStr2(Stringstr2){this.str2=str2;}}创建一个Kong对象,注入""和null以上五个方法都是setter向需要的对象中注入数据构造方法注入:构造方法注入数据:创建Hello对象和ConstructorClass对象,通过ConstructorClass构造方法注入Hello对象和属性值创建一个ConstructorClass类,并创建构造方法ConstructorClass.javapublicclassConstructorClass{privateStringname;私有字符串年龄;私人你好你好;publicConstructorClass(Stringname,Stringage,Hellohello){this.name=name;这个。年龄=年龄;这。你好=你好;}publicStringgetName(){返回名称;}publicStringgetAge(){返回年龄;}publicHellogetHello(){返回你好;,灵活更好。构造注入在开发中并不常用。构造注入数据一般用在autowire的框架中。自动组装通过Type根据注入的类型,创建一个User对象,根据User对象中需要注入的属性,查找spring容器中是否有,如果有对应类型的对象,则注入前提:spring容器中对应的类类型不能是两个或多个byName是根据姓名。比如User中有一个Dog类需要注入,User类中有一个setDog()方法。根据setDog方法名,去掉set,首字母小写得到名字dog,查找spring容器中是否有对应的名字。对象,然后通过set方法注入