当前位置: 首页 > news >正文

南宁网站建设公司seo优化诗词网页制作素材

南宁网站建设公司seo优化,诗词网页制作素材,wordpress 无响应,襄阳网站建设开发Autowired#xff1a;实现自动装配功能的注解 Autowired注解能够标识的位置#xff1a; 标识在成员变量上#xff0c;此时不需要设置成员变量的set方法标识在成员变量对应的set方法上标识在为当前成员变量赋值的有参构造上使用注解进行自动装配#xff0c;只要在其成员变量…Autowired实现自动装配功能的注解 Autowired注解能够标识的位置 标识在成员变量上此时不需要设置成员变量的set方法标识在成员变量对应的set方法上标识在为当前成员变量赋值的有参构造上使用注解进行自动装配只要在其成员变量上添加Autowired即可在之前基于XML的自动装配时我们使用的是autowire属性我们需要为其成员变量设置set和get方法但使用注解的方式进行自动装配是不需要要这一过程的 控制层调用service处理业务逻辑 package springIocAnnotation_packages.spring_controller;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import springIocAnnotation_packages.spring_Service.UserService;Controller(controller) public class UserController {Autowired //使用Autowired表示为自动装配private UserService userService;public void saveUser(){userService.saveUser();} }业务层 package springIocAnnotation_packages.spring_Service;import org.springframework.stereotype.Service;Service public interface UserService {void saveUser(); }业务层的实现类业务层中调用Dao实现持久化操作 package springIocAnnotation_packages.spring_Service.impl;import org.springframework.stereotype.Service; import springIocAnnotation_packages.spring_Dao.UserDao; import springIocAnnotation_packages.spring_Service.UserService;Service public class UserServiceImpl implements UserService {Autowiredprivate UserDao userDao;Overridepublic void saveUser() {userDao.saveUser();} }持久层 package springIocAnnotation_packages.spring_Dao;public interface UserDao {void saveUser(); }持久层实现类 package springIocAnnotation_packages.spring_Dao.impl;import org.springframework.stereotype.Repository; import springIocAnnotation_packages.spring_Dao.UserDao;Repository public class UserDaoImpl implements UserDao {Overridepublic void saveUser() {System.out.println(保存成功~);} }spring-ioc-annotation.xml文件 ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsdcontext:component-scan base-packagespringIocAnnotation_packages/context:component-scan /beans测试类如下 import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import springIocAnnotation_packages.spring_controller.UserController;public class spring_ByAnnotationTest {Testpublic void test(){ApplicationContext iocnew ClassPathXmlApplicationContext(spring-ioc-annotation.xml);UserController userController ioc.getBean( UserController.class);userController.saveUser();} }测试结果如下所示 Autowired实现自动装配的原理 在之前的学习中我们了解到自动装配是将autowire属性的值设置为byName[将要赋值的属性的名字作为bean的id再在IOC容器中去匹配到某一个bean为当前属性进行赋值]或者byType[根据类型在IOC容器中获取类型匹配的bean为当前的属性自动进行赋值] 那么现在我们使用注解的方式到底是根据byName还是byType呢 答案:byType 那么为什么不能是byName呢 我们这里要赋值的成员变量叫userservice和它类型匹配的是UserServiceImpl,很明显当前的属性名和其id是不相同的因为我们在上篇文章中就说过使用注解 扫描的方式管理的bean的id默认是其类的小驼峰形式而UserServiceImpl的小驼峰形式为userServiceImpl,对于持久层也是如此userDao和它类型匹配的是UserDaoImpl它的小驼峰形式为userDaoImpl,由此可说明Autowired默认通过byType的方式在IOC容器中通过类型匹配到某个bean来为 尚属性进行赋值 既然是根据类型那么就会发生匹配到多个类或者是一个都没匹配到如下所示 在XML文件中添加两个bean对象使其id和我们的成员变量一致 bean iduserService classspringIocAnnotation_packages.spring_Service.impl.UserServiceImpl/bean bean iduserDao classspringIocAnnotation_packages.spring_Dao.impl.UserDaoImpl/bean经过上述修改以及结合我们之前学过知识我们知道这种情况下会抛出无法匹配到唯一bean的异常那么事实真的如此吗 一测便知 测试结果如下所示 竟然输出了保存成功难道是我们之前学习的知识有问题 那当然不是原因是 默认情况下它是通过byType实现自动装配但是如果有多个类型匹配的bean它将通过byName 既然byType不行那就byName但是有没有一种情况是二者都不满足呢 也就是如果byType和byName的方式都无法实现自动装配即IOC容器中有多个类型匹配的bean且这些bean的id和要赋值的的属性的属性名不一致那么会抛出异常NoUniqueBeanDefinitionException 测试如下 手动修改id的值使其与成员变量名不相同下述这种情况就满足byType和byName都无法实现自动装配 context:component-scan base-packagespringIocAnnotation_packages/context:component-scan bean idService classspringIocAnnotation_packages.spring_Service.impl.UserServiceImpl/bean bean idDao classspringIocAnnotation_packages.spring_Dao.impl.UserDaoImpl/bean测试结果如下 针对上述这种情况我们的解决办法为在其成员变量上添加Qualifier注解通过该注解的value值去指定某个bean的id将这个bean为该属性赋值 如下所示 测试结果如下所示 那么如果byType一个都没匹配到呢 若IOC容器中没有任何一个类型匹配的bean此时抛出异常NoSuchBeanDefinitionException在Autowired注解中有个属性required默认值为true要求必须完成自动装配可以将required设置为false设置为false之后的效果即为能装配则装配不能装配则使用属性的默认值 测试如下 1我们将XML文件中的bean对象删除 2将所有的Qualifier删除 3删除UserServiceImpl类上Service注解三步完成之后进行测试 报错如下 //没有任何一个UserService的类可用至少需要一个bean来完成自动装配的效果所依赖的Autowired注解中的required属性//导致异常产生的原因就是当前Autowired注解中的required属性的值为true默认情况下必须完成自动装配不完成自动装配直接报错 Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type springIocAnnotation_packages.spring_Service.UserService available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {org.springframework.beans.factory.annotation.Autowired(requiredtrue)}上述所说的也是一种特殊情况既然是Autowired注解中的required属性的值为true导致的异常产生那么我们将其设置为 false是否可以解决这个问题呢 测试结果如下 上面我们说默认的byType不行那么我们就使用byName,要是还不行再使用新的注解Qualifier但这种特殊的情况在实际的开发中是非常少的因为一个类型的bean我们只会在IOC容器中配置一次我们不可能配置多次这个时候我们使用默认的byType即可
http://www.eeditor.cn/news/118511/

相关文章:

  • 茂名中小企业网站制作图书销售网站建设
  • 网站建设衤金手指花总直接用源码做网站盗版吗
  • 百度指数 多少流量 网站名提升学历报考什么专业比较好
  • 俄罗斯门户网站菏泽建设
  • 网站会员体系方案网站建设公司 上
  • 如何设计一个购物网站网站正则表达式怎么做
  • 报表网站建设wordpress 带视频企业主体
  • discuz是什么网站程序四川省住房城乡建设厅网站
  • 网站不用了 怎么关闭吗wordpress免费空间
  • 网站建设合同要上印花税吗360网站推广官网硅钙钾镁肥
  • 淘宝网站怎么做链接地址品牌vi设计机构
  • 东阳市住房与城乡建设局网站网站开发去哪里培训
  • 百度商桥怎样绑定网站怎么分享网站
  • 免费网站制作作业做个公司展示网站多少钱 后期有什么费用
  • asp.net 网站图标开发板是什么东西
  • 网站开发工具的功能包括html全国卫生计生机构建设管理系统网站
  • 平顶山建设局网站做海报哪个网站好
  • 华为弹性云做网站天河区建网站
  • 局网站信息内容建设 自查报告做网站需要懂哪些语言
  • 网站开发项目总结中国建设监理协会继续教育网站
  • 在那个网站做推广实用上海网站搜索优化
  • 做网站ie10缓存保洁公司用哪些网站做推广
  • 山东建站管理系统网络安全工程师年薪
  • eclipes网站建设教程平面设计师赚钱吗
  • 网站建设的价格微分销平台登录
  • 西部数码 成品网站江西网站建设与推广
  • 佛山seo网站推广静态单页网站wordpress
  • 济南外贸网站建站查找网站备案
  • 购物小程序怎么做推广排名seo
  • 自己做网站怎么做长安高端装备网站设计公司