Spring学习

spring相较于jsp&servlet直观上来看就是配置文件多了,我们可以不需要在逻辑代码中new对象或者写很多数据库相关的语句,代替的则是spring中的applicationContext.xml文件、JdbcTemplate类(取代了传统的SQL语句编写)。

spring的核心机制在于IoC(控制反转,也叫依赖注入DI),我的理解就是我们可以不需要在程序代码中一个个new对象,而是直接在配置文件中通过使用构造方法或者属性setter方法注入。书上的解释为使用spring框架后,对象的实例不再由调用者创建,而是由spring容器来创建,spring容器会负责控制程序之间的关系,而不是由调用者的程序代码直接控制。这样,控制权由应用程序代码转移到了spring容器,控制权发生了反转,也就是称为控制反转。当我们实际操作修改代码时,就避免了一个个去调试,改从配置文件入手。

一个简单的示例如下:

1:首先编写applicationContext.xml文件,spring容器会首先加载它


    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">

    
    
        
        
    

2:编写测试

package com.ssm;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestSpringConstructor {
    public static void main(String[] args) {
        //初始化Spring容器,加载applicationContext.xml文件
        ApplicationContext ctx= new ClassPathXmlApplicationContext("applicationContext.xml");
        //通过容器获取配置中的adminInfo的实例
        AdminInfo adminInfo= (AdminInfo) ctx.getBean("adminInfo");
        System.out.println(adminInfo);
        adminInfo.print();
    }

}
 

示例中是使用构造方法注入,另外一种方法是使用setter方法注入被依赖的对象。

xmlns:p="http://www.springframework.org/schema/p",p命名空间来简化

测试类中部分代码改为

AdminInfo admin = (AdminInfo) ctx.getBean("admin");//获取配置中的AdminInfo实例

admin.print();

代码参考:Spring+Spring MVC+Mybatis框架技术精讲与整合案例 清华大学出版社,建议配合书,加了一点点自己的理解。

 

 

 

 

 

 

 


 

 

 

你可能感兴趣的:(框架)