通俗的说一下Spring

                                       通俗的说一下Spring

        Spring它是一个开源的框架,我们通常认为Spring框架它是一个大管家,没错它就是一个大管家,所以说我们在开发当中Spring框架是不可缺少的,它是JavaEE/SE的一站式框架(轻量级的),那什么是轻量级呢?我们在开发中会把服务器端分为三层架构:web层、业务逻辑层、持久层。

        我们来说一下这三层架构:web层也就是spring为我们提供了springMVC这一框架,(后续我们会详细介绍springMVC的);业务逻辑层也就是我们所说的service层,spring提供了Bean管理、IOC以及事务的管理;持久层:spring为我们提供了JDBC的模板(JdbcTemplate)他可以很好的与ORM框架进行整合,比如说:Hibernate,Mybatis,的持久层的框架;

        我们来解说一下spring的有点:

        ①方便解耦,简化开发

                spring就是一个大工厂,可以将所有的对象创建和依赖关系维护都交给spring进行管理

        ②支持AOP的开发

                spring提供了面向切面编程,可以很方便的对程序进行拦截,运行监控的功能;

        ③声明式事务的支持  

                只需要配置就可以完成对事务的管理,而无序手动的编程

        ④方便对程序的测试

                spring对Junit4支持,可以通过注解@Test测试spring的程序

        ⑤方便集成各种优秀的框架

                spring不排斥各种优秀的框架,其中内部提供了对各种优秀框架的支持(Struts2、hibernate,Mybatis)的直接的支持


    OK,以上就是我们所说的spring的优点

---------------------------------------------------------------------------------------------------------------------------------通常我们说到spring就会知道:spring的IOC和AOP还有DI

        我们来说一下springIOC的底层的实现原理,IOC就是我们所说的(控制反转)那么什么是控制控制反转呢?简单的理解就是反射机制,在传统的方式开发的演变过程

        起初我们采用的是UserService service = new UserService();面向对象的编程  -->我们会采用new一个对象的方式来对service层进行连接的。

         其次我们采用的是UserService service = new UserServiceImpl();面向借口的编程 -->我们会采用new一个接口的方式来对service层进行连接的。我们在开发中都会采用OCP原则(open-close原则)既是对程序的扩展是open的,对修改程序代码是close的,尽量做到不修改程序的代码,实现对程序的扩展

          然后我们采用了工厂设计模式-->用工程设计模式对spring的IOC进行了实现

-->//创建spring的工厂

ApplicationContext applicationContext = new ClassPathXMLApplicationContext(configLocation:"applicationContext.xml");

//获得工厂的类

UserService userService = (UserService) applicationContext.getBean("XXX")

                    XXX值得是Xml中配置的ID属性

          目前大多数情况下都使用的是:工厂+反射+配置文件的方式进行IOC的实现

           随着技术的发展spring提供了springboot让我们放弃了对配置文件的设置;减少了开发中对配置文件的设置

---------------------------------------------------------------------------------------------------------------------------

            spring的Bean管理(Xml)  Xml中的Bean

            ①采用无参构造:<Bean id='Bean1' class='com.fyn.ioc.Bean1'>

            ②静态工厂实例化:<Bean id='Bean2' class='com.fyn.ioc.Bean2' factory-method='createBean2'>

            ③实例工厂:<Bean id='Bean3' class='com.fyn.ioc.Bean3'>

                                <Bean id='Bean3' factory-bean='bean3Factory' factory-method='createBean3'>

            Bean标签中的配置   

                id和name ,一般情况下,装配一个bean时,通过指定的id属性作为bean的名称,id属性在IOC容器中必须是唯一的,如果bean的名称有特殊的符号,我们就需要使用name属性了

                class用于设置一个类的全路径的名称,主要作用是IOC容器生成类的实例。

----------------------------------------------------------------------------------------------------------------------------

未经本人允许不得转载

            如有不理解的+Q1452256520微笑

                               

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值