网站建设在学校中的作用,西安有做网站的吗,wordpress 空间商,公司部门解散调岗不同意有赔偿吗Spring
Spring:春天------给软件行业带来了春天! 2002#xff0c;首次推出了Spring框架的雏形: interface21框架! Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日发布了1.0正式版。 RodJohnson#xff0c;Spring Framework创始人给软件行业带来了春天! 2002首次推出了Spring框架的雏形: interface21框架! Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日发布了1.0正式版。 RodJohnsonSpring Framework创始人著名作者。很难想象RodJohnson的学历真的让好多人大吃惊他是悉尼大学的博士然而他的专业不是计算机而是音乐学。 spring理念:使现有的技术更加容易使用本身是一个大杂烩整合了现有的技术框架!
优点
Spring是一个开源的免费的框架(容器)! Spring是一个轻量级的、非入侵式的框架! 控制反转 (IOC)面向切面编程 (AOP) ! 支持事务的处理对框架整合的支持! 总结一句话: Spring就是一个轻量级的控制反转 (IOC)和面向切面编程 (AOP)的框架!
运用Spring首先需要导入依赖spring-webmvc为了后面整合Mybatis,需要导入spring-jdbc依赖 理解IOC原型的小demo
创建一个空的maven父工程删除src目录导入spring-webmvc依赖 编写一个DAO层接口并定义一个获得用户的方法 编写一个接口实现类实现接口并重写方法定义该方法的具体实现内容 编写一个Service层接口并定义获得用户的方法 编写该Service接口的实现类重写该方法该方法实际操作就是导入刚才的DAO层实现类并用该类执行对应的方法 客户端这边直接创建一个刚才编写的Service层的实现类并调用该实现类的相应方法即可该方法实际上就是执行了自己导入的对应的DAO层实现类所执行的方法 如果说我们需求增加又新创建了一个DAO层接口的实现类执行的内容不一样 那我们客户端如果想执行这个方法的话那么就需要在Service实现类中去将创建的DAO层实现类给更改为这个新的实现类需要更改源代码 然后客户端这边新建Service层的实现类后调方法执行的才会是新的DAO层实现类所执行的操作 上面的操作需要更改源代码如果程序复杂的话那我们需要更改很多源代码非常不舒服我们在Service层的实现类中由之前主动创建一个对应的DAO层接口实现类改为设一个set方法来让用户在客户端直接动态的注入所想执行的DAO层接口实现类执行自己需要的方法。 比如在客户端这边用户想要执行MysqlImpl这个DAO层接口实现类所执行的方法那么直接在新建一个Service层实现类后通过我们之前的set方法动态注入我们所需要的DAO层接口实现类即可。 用户想执行别的DAO层实现类所执行的操作直接在set中更改对应的接口实现类即可这种方式可以让我们不必更改后面的源代码只专注于业务即可。 小结
在我们之前的业务中用户的需求可能会影响我们原来的代码我们需要根据用户的需求去修改原代码!如果程序代码量十分大修改一次的成本代价十分昂贵! 我们使用一个Set接口实现.已经发生了革命性的变化!
之前程序是主动创建对象!控制权在程序猿手上! 使用了set注入后程序不再具有主动性而是变成了被动的接受对象! 这种思想从本质上解决了问题我们程序猿不用再去管理对象的创建了。系统的耦合性大大降低~可以更加专注的在业务的实现上!这是IOC的原型! IOC本质
控制反转loC(lnversion of Control)是一种设计思想DI(依赖注入)是实现loC的一种方法也有人认为DI只是loC的另一种说法。没有loC的程序中我们使用面向对象编程对象的创建与对象间的依赖关系完全硬编码在程序中对象的创建由程序自己控制控制反转后将对象的创建转移给第三方个人认为所谓控制反转就是:获得依赖对象的方式反转了
控制反转是一种通过描述(XML或注解)并通过第三方去生产或获取特定对象的方式。在Spring中实现控制反转的是loC容器其实现方法是依赖注入 (DependencyInjection,DI)。
理解IOC的demo,HelloSpring
编写一个实体类Hello,并设置一个str属性设置对应的get/set方法 IOC需要在resources目录下创建一个xml的配置文件用来创建、管理bean实体类名字可以随意不过正规是applicationContext.xml 我们将刚才自己写的Hello实体类设置在其中id代表实体类对象的名字class代表对应的实体类property和value可以根据实体类中的set方法设置生成对象的属性值,这里就相当于spring容器帮我们创建了一个属性str值为Spring的hello对象。 编写测试类先获得context对象然后根据id对象名用getBean方法获得由spring容器创建好的hello对象 思考问题
Hello 对象是谁创建的 ? hello 对象是由Spring创建的 Hello 对象的属性是怎么设置的 ? hello 对象的属性是由Spring容器设置的 这个过程就叫控制反转: 控制:谁来控制对象的创建传统应用程序的对象是由程序本身控制创建的使用Spring后对象是由Spring来创建的. 反转:程序本身不创建对象而变成被动的接收对象 依赖注入:就是利用set方法来进行注入的 IOC是一种编程思想由主动的编程变成被动的接收
OK到了现在我们彻底不用在程序中去改动了要实现不同的操作只需要在xml配置文件中进行修改所谓的loC,一句话搞定 : 对象由Spring 来创建管理装配!
我们把Hello类中的set方法删除 我们可以看到bean.xml中的str爆红因为没有set方法供其来赋值注入值 我们将第一demo中不同的DAO层接口实现类在bean.xml中配置并且将Service层的接口实现类配置并且将其属性userDao,用ref赋值为用户需要的DAO层接口实现类 之前在客户端还需要手动创建Service层接口实现类并且通过set方法来穿我们需要的DAO层接口实现类让Service层接口实现类执行相应的DAO层接口实现类的方法。 如今我们只需要获得context上下文对象然后用getBean方法根据id名获取Service层接口实现类其具体的要实现哪个DAO层的接口实现类在bean.xml中已经配好直接执行就行了刚赋值的是mysqlImpl,故执行的是这个DAO层接口实现类的方法 想要更换别的DAO层接口实现类的方法那只需在bean.xml中在创建Service层接口实现类对象时将其属性userDao用ref赋值为我们需要的DAO层接口实现类即可。 客户端代码不变再次执行就可执行更改后的DAO层接口实现类所执行的方法可以看到用户不需要再去更改程序的代码只需要在bean.xml中修改相应的配置即可。 IOC创建对象方式
我们定义一个实体类有一个无参构造器 在bean.xml中配置这个实体类 在客户端获得context对象然后getBean方法得到这个user对象可以发现spring容器走的是无参构造器创建的这个对象 有参构造器创建
给该实体类只设置一个有参构造器 第一种下标赋值
在bean.xml中配置该实体类参数根据参数的下标来对应赋值 第二种根据参数类型赋值不建议 第三种直接根据参数名赋值 我们再创建一个额外的实体类并设置无参构造器 将其在bean.xml种配置 我们在客户端再获得context对象然后getBean获得第一个实体类的对象我们发现我们新设置的这个实体类对象也依然通过其自己的无参构造器被创建了 总结:
故我们可以知道我们配置的实体类在配置文件加载的时候容器中管理的对象就已经初始化了! 文章转载自: http://www.morning.hhfwj.cn.gov.cn.hhfwj.cn http://www.morning.kzhgy.cn.gov.cn.kzhgy.cn http://www.morning.qlkzl.cn.gov.cn.qlkzl.cn http://www.morning.kryxk.cn.gov.cn.kryxk.cn http://www.morning.cklgf.cn.gov.cn.cklgf.cn http://www.morning.htbbp.cn.gov.cn.htbbp.cn http://www.morning.wncb.cn.gov.cn.wncb.cn http://www.morning.trjp.cn.gov.cn.trjp.cn http://www.morning.lgwjh.cn.gov.cn.lgwjh.cn http://www.morning.mkfhx.cn.gov.cn.mkfhx.cn http://www.morning.njpny.cn.gov.cn.njpny.cn http://www.morning.bfsqz.cn.gov.cn.bfsqz.cn http://www.morning.qbwyd.cn.gov.cn.qbwyd.cn http://www.morning.zdsdn.cn.gov.cn.zdsdn.cn http://www.morning.htqrh.cn.gov.cn.htqrh.cn http://www.morning.rxydr.cn.gov.cn.rxydr.cn http://www.morning.xdmsq.cn.gov.cn.xdmsq.cn http://www.morning.ymrq.cn.gov.cn.ymrq.cn http://www.morning.srkzd.cn.gov.cn.srkzd.cn http://www.morning.mjtgt.cn.gov.cn.mjtgt.cn http://www.morning.zlmbc.cn.gov.cn.zlmbc.cn http://www.morning.jkcpl.cn.gov.cn.jkcpl.cn http://www.morning.jkszt.cn.gov.cn.jkszt.cn http://www.morning.dgxrz.cn.gov.cn.dgxrz.cn http://www.morning.rnzbr.cn.gov.cn.rnzbr.cn http://www.morning.jlrym.cn.gov.cn.jlrym.cn http://www.morning.trlhc.cn.gov.cn.trlhc.cn http://www.morning.hdnd.cn.gov.cn.hdnd.cn http://www.morning.bsqkt.cn.gov.cn.bsqkt.cn http://www.morning.zmtrk.cn.gov.cn.zmtrk.cn http://www.morning.mkccd.cn.gov.cn.mkccd.cn http://www.morning.djgrg.cn.gov.cn.djgrg.cn http://www.morning.zcxjg.cn.gov.cn.zcxjg.cn http://www.morning.wfpmt.cn.gov.cn.wfpmt.cn http://www.morning.mqbdb.cn.gov.cn.mqbdb.cn http://www.morning.dwfxl.cn.gov.cn.dwfxl.cn http://www.morning.xnqjs.cn.gov.cn.xnqjs.cn http://www.morning.mrbmc.cn.gov.cn.mrbmc.cn http://www.morning.qfmcm.cn.gov.cn.qfmcm.cn http://www.morning.nqwkn.cn.gov.cn.nqwkn.cn http://www.morning.nqrfd.cn.gov.cn.nqrfd.cn http://www.morning.zmqb.cn.gov.cn.zmqb.cn http://www.morning.byjwl.cn.gov.cn.byjwl.cn http://www.morning.tmcmj.cn.gov.cn.tmcmj.cn http://www.morning.ltrz.cn.gov.cn.ltrz.cn http://www.morning.bhznl.cn.gov.cn.bhznl.cn http://www.morning.mdwlg.cn.gov.cn.mdwlg.cn http://www.morning.rrjzp.cn.gov.cn.rrjzp.cn http://www.morning.ckbmz.cn.gov.cn.ckbmz.cn http://www.morning.qncqd.cn.gov.cn.qncqd.cn http://www.morning.pdxqk.cn.gov.cn.pdxqk.cn http://www.morning.gbwfx.cn.gov.cn.gbwfx.cn http://www.morning.lztrt.cn.gov.cn.lztrt.cn http://www.morning.rfjmy.cn.gov.cn.rfjmy.cn http://www.morning.mjzcp.cn.gov.cn.mjzcp.cn http://www.morning.bwzzt.cn.gov.cn.bwzzt.cn http://www.morning.xnwjt.cn.gov.cn.xnwjt.cn http://www.morning.qrqg.cn.gov.cn.qrqg.cn http://www.morning.yfpnl.cn.gov.cn.yfpnl.cn http://www.morning.yswxq.cn.gov.cn.yswxq.cn http://www.morning.tsgxz.cn.gov.cn.tsgxz.cn http://www.morning.sgpny.cn.gov.cn.sgpny.cn http://www.morning.jzlkq.cn.gov.cn.jzlkq.cn http://www.morning.jhxtm.cn.gov.cn.jhxtm.cn http://www.morning.shangwenchao4.cn.gov.cn.shangwenchao4.cn http://www.morning.ktcrr.cn.gov.cn.ktcrr.cn http://www.morning.nsyzm.cn.gov.cn.nsyzm.cn http://www.morning.wdwfm.cn.gov.cn.wdwfm.cn http://www.morning.drfcj.cn.gov.cn.drfcj.cn http://www.morning.rrhfy.cn.gov.cn.rrhfy.cn http://www.morning.gqdsm.cn.gov.cn.gqdsm.cn http://www.morning.lmdfj.cn.gov.cn.lmdfj.cn http://www.morning.rtmqy.cn.gov.cn.rtmqy.cn http://www.morning.pjwrl.cn.gov.cn.pjwrl.cn http://www.morning.znqxt.cn.gov.cn.znqxt.cn http://www.morning.fqmcc.cn.gov.cn.fqmcc.cn http://www.morning.bcdqf.cn.gov.cn.bcdqf.cn http://www.morning.sloxdub.cn.gov.cn.sloxdub.cn http://www.morning.fzqfb.cn.gov.cn.fzqfb.cn http://www.morning.yrdn.cn.gov.cn.yrdn.cn