第一章 Spring的基本应用

本章思考题:

1.请简述Spring框架的优点

2.简述什么是Spring的IOC和DI.

一.IOC?

IOC(控制反转):Spring就是一个大工厂,将所有对象的创建和依赖关系都交给Spring容器管理.

下面简要介绍IOC的"hello world"代码,按以下三步进行:

1.导入jar包  2.写配置文件(ApplicationContext.xml)  3.从spring容器中获取对象

 

 

 二.DI?

DI(依赖注入):spring创建对象A时,会将对象A所依赖的对象B也创建出来,并自动注入到对象A中。

依赖:(has a) 有一个的意思,比如类A中有一个类B,那么就说A依赖B。继承,实现(is a)

          

下面是实例:

1.导入jar包   2.创建A类和B类   3.配置文件  4.容器中获取对象  5.结果

        

    

 

 

 三.依赖注入的实现方式

构造方法注入

属性setter方法注入

普通方法

集合类

<bean id="collect" class="com.zlj.Collect">
        <property name="clist">
            <list>
                <value>zoulingjin</value>
                <value>20</value>
            </list>
        </property>      
        <property name="cset">
            <set>
                <value>xxx1</value>
                <value>xxx2</value>
            </set>
        </property>    
        <property name="cmap">
            <map>
                <entry key="z001" value="zoulingjin"></entry>
                <entry key="z002" value="kai"></entry>
            </map>
        </property>    
        <property name="cproperties">
            <props>
                <prop key="x">y</prop>
                <prop key="a">b</prop>
                <prop key="w">m</prop>
            </props>
        </property>
    </bean>

 

四.依赖Annation(注解)实现依赖注入

注解格式:@xxx

使用注解:必须对使用注解的地方进行扫描,不然注解没用。而扫描需要做两件事

   1、添加名称空间,

      在我们找配置文件中约束的位置那:spring-framework-3.2.0.RELEASE\docs\spring-framework-reference\html\xsd-config.html 找到context的名称空间。

    

             

    2、扫描指定的目录,

        

    注解:

    1、@Component  替代  <bean id="" class=""> 可以配置任意bean,在所在类上面添加该注解即可,

          @Component("userId") userId相当于bean中的id属性值

           

 

    2、  这三个就跟使用@Component是一样的,但是为了更好的体现三层架构,就有了这三个注解

         @Controller  修饰web层中的类。

         @Service  修饰service层的类

         @Repository  修饰dao层的类

            两种方式,一种不声明名称,一种声明名称

            @Controller("xxx")  @Controller  

            如果声明了名称,那么在别的地方引用的话,就可以使用@Autowired或@Autowired与@Qualifier的组合 或直接使用@Resource按照名称注入

            如果没有声明名称,那么在别的地方引用的话,只能使用@Autowired 来进行注入

    3、属性注入

         普通属性

            @Value    @Value("")  给普通属性注入属性值

          引用属性

              @Autowired  按默认类型进行注入

              @Qualifier("") 按照名称注入  

            如果使用了@Qualifier这个注解,那么就需要两个一起使用才能生效。如果只使用@Autowired,那么写不写@Qualifier都可以

          引用属性

            @Resource  直接按照名称注入,与上面两个注解一起使用是等效的  

                @Resource(name="xxx")

             

    4、使用

                       

    5、其他注解

         @Scope("prototype")  作用域注解(spring帮我们创建的bean实例的作用域,在下面会讲解到)

         @PostConstruct  修饰初始化    

         @PreDestory  修饰销毁

 

五.Bean的作用域

简要讲下singleton(单例)和prototype(原型),一般bean的scope默认值为singleton

singleton:在spring容器中永远只有一个实例,无论多少个bean引用.他始终指向同一个对象.

prototype:每次通过spring容器获取定义的bean是,都将创建一个新的Bean实例

 

 

 

 

                    

 

posted @ 2018-08-16 14:31  leonard丶zou  阅读(152)  评论(0编辑  收藏  举报