java学习笔记——ssm之 spring的安装 与 IOC的认识

1、Spring

1、框架;半成品软件;

          高度抽取可重用代码的一种设计;高度的通用性;

          书城:WebUtils.java;BaseServlet;Filter....

          打包:boostore.jar;(工具类)

                    commons-fileupload,commons-io(工具类),commons-dbutils(方便操作数据库的工具)

          框架:抽取成一种高度可重用的;事务控制,强大的servlet,项目中的一些工具。,,,

                    框架:多个可重用模块的集合,形成一个某个领域的整体解决方案;

 

2、Spring;

          容器(可以管理所有的组件(类))框架;

          核心关注:IOC和AOP;

          

3、Spring(IOC和AOP )  spring框架的jar包库下载地址 https://download.csdn.net/download/qq_25106373/10582375

java学习笔记——ssm之 spring的安装 与 IOC的认识

三个一组:source是源码包;

 

Spring的模块划分图:

java学习笔记——ssm之 spring的安装 与 IOC的认识

Test:Spring的单元测试模块;

     spring-test-4.0.0.RELEASE

Core Container:核心容器(IOC);黑色代表这部分的功能由哪些jar包组成;要使用这个部分的完整功能,这些jar都需要导入

 

spring-beans-4.0.0.RELEASE

spring-core-4.0.0.RELEASE

spring-context-4.0.0.RELEASE

spring-expression-4.0.0.RELEASE

AOP+Aspects(面向切面编程模块)

 

     spring-aop-4.0.0.RELEASEspring-aop-4.0.0.RELEASE

数据访问/:Spring数据库访问模块

 

     spring-jdbc-4.0.0.RELEASEspring-orm(Object Relation Mapping)-4.0.0.RELEASE

     spring-oxxmlm-4.0.0.RELEASEspring-jms-4.0.0.RELEASE、(Intergration

     spring-tx-4.0.0.RELEASE(事务)

Web:Spring开发web应用的模块;

 

spring-websocket(新的技术)-4.0.0.RELEASE

spring-web-4.0.0.RELEASE、和原生的web相关(servlet

spring-webmvc-4.0.0.RELEASE、开发web项目的(web

spring-webmvc-portlet-4.0.0.RELEASE(开发web应用的组件集成)

 

用哪个模块导哪个包(建议);

 

 


开发Spring框架的应用,经常要写框架的配置文件,写起来复杂,我们需要提示;

需要给eclipse中安装插件;(提供提示功能);

 

 


插件安装:

1)、不想装插件;使用Spring官方提供的sts开发工具(装好插件的eclipse)

2)、装插件;

          1)、查看当前eclispe的版本;

                    Help->About Eclipse-->点击自己eclipse的图标

java学习笔记——ssm之 spring的安装 与 IOC的认识 2)、安装新软件

          1)、

java学习笔记——ssm之 spring的安装 与 IOC的认识  2)、看好选中插件   选择自己需要的版本  插件的下载地址

https://download.csdn.net/download/sun8112133/10378796

https://download.csdn.net/download/qq_25106373/10582382

https://download.csdn.net/download/qq_25106373/10582386

https://download.csdn.net/download/qq_25106373/10582388

java学习笔记——ssm之 spring的安装 与 IOC的认识3)、4.3.2可以装4.3.1;

java学习笔记——ssm之 spring的安装 与 IOC的认识 3)、选中带有SpringIDE的四项;

java学习笔记——ssm之 spring的安装 与 IOC的认识  4)、一路next

java学习笔记——ssm之 spring的安装 与 IOC的认识3、安装成功的标志;

java学习笔记——ssm之 spring的安装 与 IOC的认识

一定要能创建出Spring的配置文件

java学习笔记——ssm之 spring的安装 与 IOC的认识

安装失败:

1)、使用官方提供的开发工具;

2)、换成kepler;

          在别的地方解压一个新的eclipse;

 

 

2、IOC

Spring(IOC+AOP);

java学习笔记——ssm之 spring的安装 与 IOC的认识

IOC:(Inversion(反转) Of  Control):控制反转;

          控制:资源的获取方式;

                    主动式:(要什么资源都自己创建即可)

                              BookServlet{

                                        BookService bs = new BookService();

                                        AirPlane ap = new AirPlane();//复杂对象的创建是比较庞大的工程;

                              }

                    被动式:资源的获取不是我们自己创建,而是交给一个容器来创建和设置;

                              BookServlet{

                                        BookService bs;

                                        public void test01(){

                                                      bs.checkout();// 

                                        }

                              }

     容器:管理所有的组件(有功能的类);假设,BookServlet受容器管理,BookService也受容器管理;容器可以自动的探查出那些组件(类)需要用到另一写组件(类);容器帮我们创建BookService对象,并把BookService对象赋值过去;

 

容器:主动的new资源变为被动的接受资源;

 

(容器)婚介所;

              主动获取变为被动接受;

               

 

                    

DI:(Dependency Injection)依赖注入;

          容器能知道哪个组件(类)运行的时候,需要另外一个类(组件);容器通过反射的形式,将容器中准备好的BookService对象注入(利用反射给属性赋值)到BookServlet中;

 

 

只要IOC容器管理的组件,都能使用容器提供的强大功能;

 


HelloWorld;(通过各种方式给容器中注册对象(注册会员))

以前是自己new 对象,现在所有的对象交给容器创建;给容器中注册组件

 

以后框架编写流程;

java学习笔记——ssm之 spring的安装 与 IOC的认识

1)、导包

 

核心容器

spring-beans-4.0.0.RELEASE.jar

spring-context-4.0.0.RELEASE.jar

spring-core-4.0.0.RELEASE.jar

spring-expression-4.0.0.RELEASE.jar

commons-logging-1.1.3.jar

Spring运行的时候依赖一个日志包;没有就报错;

 

2)、写配置

     spring的配置文件中,集合了spring的ioc容器管理的所有组件(会员清单);

     创建一个Spring Bean Configuration File(Spring的bean配置文件);

 

<!-- 注册一个Person对象,Spring会自动创建这个Person对象 -->

    <!--

    一个Bean标签可以注册一个组件(对象、类) 

    class:写要注册的组件的全类名

    id:这个对象的唯一标示;

    -->

    <bean id="person01" class="com.atguigu.bean.Person">

        <!--使用property标签为Person对象的属性赋值 

            name="lastName":指定属性名

            value="张三":为这个属性赋值

        -->

        <property name="lastName" value="张三"></property>

        <property name="age" value="18"></property>

        <property name="email" value="[email protected]"></property>

        <property name="gender" value=""></property>

    </bean>

 

3)、测试

package com.atguigu.test;

import static org.junit.Assert.*;

import org.junit.Test;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.atguigu.bean.Person;

public class IOCTest {

    /**

     * 从容器中拿到这个组件

     */

    @Test

    public void test() {

        //ApplicationContext:代表ioc容器

        //ClassPathXmlApplicationContext:当前应用的xml配置文件在 ClassPath

        //根据spring的配置文件得到ioc容器对象

        ApplicationContext ioc = new ClassPathXmlApplicationContext("ioc.xml");

        

        //容器帮我们创建好对象了;

        Person bean = (Person) ioc.getBean("person01");

        

        System.out.println(bean);

        

    }

}

 


java学习笔记——ssm之 spring的安装 与 IOC的认识

new ClassPathXMlApplicationContext("ioc.xml");ioc容器的配置文件在类路径下;

FileSystemXmlApplicationContext("F://ioc.xml");ioc容器的配置文件在磁盘路径下;

 

 


 

package com.atguigu.test;

import org.junit.Test;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.atguigu.bean.Person;

public class IOCTest {

    

    /**

     * 存在的几个问题;

     * 1)、src,源码包开始的路径,称为类路径的开始;

     *      所有源码包里面的东西都会被合并放在类路径里面;

     *      java/bin/

     *      web/WEB-INF/classes/

     * 2)、导包commons-logging-1.1.3.jar(依赖)

     * 3)、先导包再创建配置文件;

     * 4)、Spring的容器接管了标志了s的类;

     */

    /**

     * 几个细节:

     * 1)、ApplicationContextIOC容器的接口)

     * 2)、给容器中注册一个组件;我们也从容器中按照id拿到了这个组件的对象?

     *      组件的创建工作,是容器完成;

     *      Person对象是什么时候创建好了呢?

     *      容器中对象的创建在容器创建完成的时候就已经创建好了;

     * 3)、同一个组件在ioc容器中是单实例的;容器启动完成都已经创建准备好的;

     * 4)、容器中如果没有这个组件,获取组件?报异常

     * org.springframework.beans.factory.NoSuchBeanDefinitionException:

     * No bean named 'person03' is defined

     * 5)、ioc容器在创建这个组件对象的时候,(property)会利用setter方法为javaBean的属性进行赋值;

     * 6)、javaBean的属性名是由什么决定的?getter/setter方法是属性名;set去掉后面那一串首字母小写就是属性名;

     *      private String lastName;

     *      所有getter/setter都自动生成!

     */

    

    

    /**

     * 从容器中拿到这个组件

     */

    @Test

    public void test() {

        //ApplicationContext:代表ioc容器

        //ClassPathXmlApplicationContext:当前应用的xml配置文件在 ClassPath

        //根据spring的配置文件得到ioc容器对象

        //ApplicationContext ioc = new ClassPathXmlApplicationContext("com/atguigu/bean/ioc.xml");

        ApplicationContext ioc = new ClassPathXmlApplicationContext("ioc.xml");

        //容器帮我们创建好对象了;

        System.out.println("容器启动完成....");

        Person bean = (Person) ioc.getBean("person01");

        Object bean2 = ioc.getBean("person01");

        System.out.println(bean == bean2);

        

        System.out.println("==================");

        Object bean3 = ioc.getBean("person03");

        

    }

}