spring25说明文档.docx
- 文档编号:9738280
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:24
- 大小:19.51KB
spring25说明文档.docx
《spring25说明文档.docx》由会员分享,可在线阅读,更多相关《spring25说明文档.docx(24页珍藏版)》请在冰豆网上搜索。
spring25说明文档
IOC简介
User.java
publicclassUser{
privateStringusername;
privateStringpassword;
publicStringgetUsername(){
returnusername;
}
publicvoidsetUsername(Stringusername){
this.username=username;
}
publicStringgetPassword(){
returnpassword;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}
}
UserDAO.java
publicinterfaceUserDAO{
publicvoidsave(Useruser);
}
UserDAOImpl.java
publicclassUserDAOImplimplementsUserDAO{
publicvoidsave(Useruser){
System.out.println("usersaved!
");
}
}
UserService.java
publicclassUserService{
privateUserDAOuserDAO;
publicvoidadd(Useruser){
userDAO.save(user);
}
publicUserDAOgetUserDAO(){
returnuserDAO;
}
publicvoidsetUserDAO(UserDAOuserDAO){
this.userDAO=userDAO;
}
}
beans.xml
xmlversion="1.0"encoding="UTF-8"?
>
//www.springframework.org/schema/beans" xmlns: xsi="http: //www.w3.org/2001/XMLSchema-instance" xsi: schemaLocation="http: //www.springframework.org/schema/beans http: //www.springframework.org/schema/beans/spring-beans-2.5.xsd"> test publicclassUserServiceTest{ @Test publicvoidtestAdd()throwsException{ ApplicationContextctx=newClassPathXmlApplicationContext("beans.xml"); UserServiceservice=(UserService)ctx.getBean("userService"); Useru=newUser(); u.setUsername("zhangsan"); u.setPassword("zhangsan"); service.add(u); } } Spring注入类型 setter注入: 使用构造方法注入(可以忘记): publicclassUserService{ privateUserDAOuserDAO; publicvoidadd(Useruser){ userDAO.save(user); } publicUserDAOgetUserDAO(){ returnuserDAO; } publicvoidsetUserDAO(UserDAOuserDAO){ this.userDAO=userDAO; } publicUserService(UserDAOuserDAO){ super(); this.userDAO=userDAO; } } beans.xml -- --> 接口注入(可以忘记) Id_Name 也可以换成name 简单属性注入(了解) UserDAOImpl.java publicclassUserDAOImplimplementsUserDAO{ privateintdaoId; privateStringdaoStatus; publicintgetDaoId(){ returndaoId; } publicvoidsetDaoId(intdaoId){ this.daoId=daoId; } publicStringgetDaoStatus(){ returndaoStatus; } publicvoidsetDaoStatus(StringdaoStatus){ this.daoStatus=daoStatus; } publicvoidsave(Useruser){ System.out.println("usersaved! "); } @Override publicStringtoString(){ returnthis.daoId+": "+this.daoStatus; } } beans.xml -- --> Bean的生存范围scope 默认是singleton每次拿出bean都是同一对象 Prototype每次取出的不一样 publicclassUserServiceTest{ @Test publicvoidtestAdd()throwsException{ ApplicationContextctx=newClassPathXmlApplicationContext("beans.xml"); UserServiceservice=(UserService)ctx.getBean("userService"); UserServiceservice2=(UserService)ctx.getBean("userService"); System.out.println(service==service2); Useru=newUser(); u.setUsername("zhangsan"); u.setPassword("zhangsan"); service.add(u); } } 集合装配 UserDAOImpl.java publicclassUserDAOImplimplementsUserDAO{ privateSet privateList privateMap publicSet returnsets; } publicvoidsetSets(Set this.sets=sets; } publicList returnlists; } publicvoidsetLists(List this.lists=lists; } publicMap returnmaps; } publicvoidsetMaps(Map this.maps=maps; } publicUserDAOImpl(){ } publicvoidsave(Useruser){ System.out.println("usersaved! "); } @Override publicStringtoString(){ return"setssize: "+sets.size()+"|listssize: "+lists.size()+"|mapssize: "+maps.size(); } } beans.xml -- --> UserServiceTest.java publicclassUserServiceTest{ @Test publicvoidtestAdd()throwsException{ ApplicationContextctx=newClassPathXmlApplicationContext("beans.xml"); UserDAOu1=(UserDAO)ctx.getBean("userDAO"); System.out.println(u1); } } 自动装配(AutoWire) UserDAOImpl.java publicclassUserDAOImplimplementsUserDAO{ privateintdaoId; publicintgetDaoId(){ returndaoId; } publicvoidsetDaoId(intdaoId){ this.daoId=daoId; } publicvoidsave(Useruser){ System.out.println("usersaved! "); } @Override publicStringtoString(){ return"daoId="+daoId; } } beans.xml UserServiceTest.java publicclassUserServiceTest{ @Test publicvoidtestAdd()throwsException{ ApplicationContextctx=newClassPathXmlApplicationContext("beans.xml"); UserServiceservice=(UserService)ctx.getBean("userService"); System.out.println(service.getUserDAO()); } } Bean的生命周期 Init-megthoddestroy-methd不要和prototype一起使用(了解) 加上prototype不会调用destroy方法 publicclassUserService{ privateUserDAOuserDAO; publicvoidinit(){ System.out.println("init"); } publicvoidadd(Useruser){ userDAO.save(user); } publicUserDAOgetUserDAO(){ returnuserDAO; } publicvoidsetUserDAO(UserDAOuserDAO){ this.userDAO=userDAO; } publicUserService(UserDAOuserDAO){ super(); this.userDAO=userDAO; } publicvoiddestroy(){ System.out.println("destroy"); } } publicclassUserService{ privateUserDAOuserDAO; publicvoidinit(){ System.out.println("init"); } publicvoidadd(Useruser){ userDAO.save(user); } publicUserDAOgetUserDAO(){ returnuserDAO; } publicvoidsetUserDAO(UserDAOuserDAO){ this.userDAO=userDAO; } publicUserService(UserDAOuserDAO){ super(); this.userDAO=userDAO; } publicvoiddestroy(){ System.out.println("destroy"); } } Annotation Annotation第一步 a)修改xml文件,参考文档 annotation-config/> @Autowired a)默认按类型bytype b)如果想用byname,使用@Qulifier c)写在privatefield(第三种注入形式)(不建议,应写在set上,破坏封装) d)如果写在set上,@qualifier需要写在参数上 UserService.java publicclassUserService{ privateUserDAOuserDAO; publicvoidadd(Useruser){ userDAO.save(user); } publicUserDAOgetUserDAO(){ returnuserDAO; } @Autowired publicvoidsetUserDAO(@Qualifier("u")UserDAOuserDAO){//如果有两个bean用此指定用哪个类型的bean this.userDAO=userDAO; } } beans.xml xmlversion="1.0"encoding="UTF-8"? > //www.springframework.org/schema/beans" xmlns: xsi="http: //www.w3.org/2001/XMLSchema-instance" xmlns: context="http: //www.springframework.org/schema/context" xsi: schemaLocation="http: //www.springframework.org/schema/beans http: //www.springframework.org/schema/beans/spring-beans-2.5.xsd http: //www.springframework.org/schema/context http: //www.springframework.org/schema/context/spring-context-2.5.xsd"> annotation-config/> Test publicclassUserServiceTest{ @Test publicvoidtestAdd()throwsException{ ClassPathXmlApplicationContextctx=newClassPathXmlApplicationContext("beans.xml"); UserServiceservice=(UserService)ctx.getBean("userService"); service.add(newUser());
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- spring25 说明 文档