Spring -- spring初识

Spring初识

工作好几年了这几天公司来了几个应届生,重新开始讲起了spring,时隔几年,重新来看才发现之前自己只是会用而已,并没有什么长进,真是汗颜,于是趁着这个机会发奋图强,整理Spring相关一些知识分享给伙伴,自己也在这个基础上进步,之后一段时间我会陆续总结一些 从一些简单理论到实践的文章分享给大家,并且借这个机会深入了解下源码,提高自己的代码水平,共勉。如果有些相关的问题、建议,欢迎大家提出,一起学习。

1、Spring是什么?

     Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。

2、为什么用Spring?(标黑为项目实践接触过、且已经理解)

        1、 方便解耦,简化开发
            * Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理
        2、AOP编程的支持
            * Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控、日志监控等功能
        3、声明式事务的支持
            * 只需要通过配置就可以完成对事务的管理,而无需手动编程
        4、方便程序的测试
            * Spring对Junit4支持,可以通过注解方便的测试Spring程序
        5、方便集成各种优秀框架
            * Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts2、Hibernate、MyBatis、Quartz等)的直接支持
        6、 降低JavaEE API的使用难度

            * Spring 对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低

3、Spring核心是什么?

 DI、IOC是将耦合的代码、从代码里提取出来放在xml文件中,通过一个容器在需要的时候把他们的依赖关系形成(ioc),也就是把需要实现的接口注入到指定的类里(di)。这也是Spring为什么有解耦的优点。

        1、DI (dependency injection) 依赖注入

            首先应该了解两个问题:

                1、谁依赖谁?

                    客户端代码中,具体对象的创建依赖于xml文件;

具体方式有两种(1).使用构造器注入:spring实例化该Bean时调用配置参数符合的构造方法。                            

  可以在构造器中确定依赖顺序        
       构造函数需要的参数1  
       构造函数需要的参数2  
       ……  
  

(2).使用属性的setter注入:直观、自然

  
         
         
       ……  

                2、谁注入、注入什么?

                     是IOC容器注入,在运行期,根据xml的配置信息,将具体的对象注入到相应的bean中。

        2、IOC 控制反转

                        通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员,而控制反转是指new实例工作不由我们程序员来做而是交给spring容器来做。创建对象的权限反转容器,就必须告诉容器具体需要创建一些什么对象,就用到了配置文件(xml,properties

BeanFactoryApplicationContextspring框架的两个IOC容器,实例化Spring IOC容器的两个方法:

ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{“spring配置文件路径”}); 
Resource res = new FileSystemResource(“spring配置文件”);  
BeanFactory factory = new XMLBeanFactory(res);

        3、AOP(aspect oriented programming)面向切面编程

AOP则将封装好的对象剖开,找出其中对多个对象产生影响的 公共行为 ,并将其封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),切面将那些与业务无关,却被业务模块共同调用的逻辑提取并封装起来,减少了系统中的重复代码,降低了模块间的 耦合 度,同时提高了系统的 可维护性(事务、日志


你可能感兴趣的:(Spring,Spring)