spring的核心技术ioc,aop能实现模块之间、类之间的解耦合。依赖class a 中使用了class b的属性或者方法则称class a依赖class b。1.ioc(Inversion of control):控制反转使用ioc的目的是减少对代码的改动实现不同的功能即解耦合。2.ioc的技术实现时DI(Dependency Injection,依赖注入)spring是使用了di实现了ioc的功能spring底层创建对象使用的是反射。3.实现步骤(1)新建项目之前的blog里写的创建maven项目的方法项目结构pom.xml文件如下pom.xml文件中properties标记的maven-compile都改为1.8(使得编译时生成的target文件夹中含有.xml文件添加spring-context插件。新建一个接口SomeServive:新建接口实现类SomeServiceImpl:resources目录下建立beans.xml文件这个文件是spring的核心注意beans标记里的bean标记每一个bean标记相当于new的一个对象即用bean标记来替代代码中的new语句主程序代码ClassPathXmlApplicationContext类从类路径编译生成的target文件夹下的classes文件夹寻找与参数指定的.xml文件返回一个ApplicationContext对象如果beans.xml不是在classes目录下则要修改路径字段ApplicationContext对象就是spring容器通过容器的getBean()方法获取对象注意别忘了强制类型转换参数是.xml文件中bean标记的id值运行程序getBean()方法从容器中获取已创建的对象注意ApplicationContext对象就是spring容器当生成一个ApplicationContext对象时就已经通过类的构造函数生成了.xml文件中所有的对象。例如在SomeServiceImpl类中加一个构造函数去掉main程序中的getBean方法发现类的构造函数依然执行了注意当我们用获取同一个bean的对象赋给两个新建的不同的对象时 会发现它们指向同一个对象2获取spring容器中java对象的信息运行结果上图的输出结果是beans中所有bean的id值。3spring还可以创建一个非自定义类对象运行结果4spring给对象基本属性赋值格式步骤在实现类中添加字段及其get,set方法并重载toString()修改beans.xml注意property标记给对象属性赋值是调用set()方法如果类中未写则程序会报错。5spring给对象引用类型属性赋值格式本质上是一个bean创建对象时给属性赋值时调用set()方法时使用另一个bean创建的对象。6构造注入在实体类中添加含参数的构造方法或者补充spring中存放对象的情况放入到spring容器中的对象有dao类、service类、controller类、工具类放到spring容器中这些对象默认是单例的在容器中这个名称的对象只有一个。不放入到spring容器中的对象有实体类对象实体类数据来自数据库、serveletlistener,filter这三种对象交给tomcat创建不放入到容器中等。