1.Spring基本用法

来源:互联网 发布:用java编写的过关游戏 编辑:程序博客网 时间:2024/06/06 11:59

       Spring 现在很多公司都在使用的一款非常强大的框架,刚开始的时候,只是停留在怎么使用spring框架,慢慢越来越深入了解spring框架的原理,让我重新对这个框架有重新的认识。

         其实spring核心机制就是“依赖注入”(IOC)和"面向切面"(AOP)其实 控制反转和依赖注入都是一个意思,一个好的框架要符合“低耦合”,“高内聚”   这也正是验证了spring的核心思想。

     1.怎么注入值:

        (1) set方法的方式注入值:

              例如:在配置文件xml中进行配置bean

                           <bean id=“xxx” class=“gy.xxx”>

                               <property name="test" ref="test1"/>

                           </bean>

                            <bean id=“test” class=“gy.xxx”>

        (2)构造器方式注入值:

                   例如:在配置文件xml中进行配置bean       

                         <bean id=“xxx” class=“gy.xxx”>

                               <construtor-arg ref="test"/>

                           </bean>

                            <bean id=“test” class=“gy.xxx”>

           解析:在spring框架中用xml的配置方式,spring会对上面的配置信息进行解析,用java的反射机制,来获取相应的类。

          第一段的黑体字相当于,java中的setTest(Test1 test1)这个方法,而name则代表的是java的要set的变量名称,相应的第二段黑体字也是调用java的带参的构造器。

          根据场景不同来比较

          set相对构造器注入值优点:

             1.类似于javabean相对程序员来说,更容易理解,与使用

             2.避免了臃肿的构造器的注入值,性能方面也有很大的提升,因为当spring配置文件初始化的时候,就会连构造器里面的实例也会进行初始化操作

             3.多参数的构造器显得有些笨重。

       2.怎么获取spring中的bean:

             一般在web.xml进行初始化操作,也可以手动获取bean;

             例如:

                     ApplicationContext ctx=new ClassPathXmlApplicationContext("bean.xml");

                     PersonService personService= (PersonService) ctx.getBean("personService",PersonService.class);

                     personService.info();

               BeanFactory 负责配置、创建、管理的bean的spring根接口  applicationContext则是beanFactory的子接口,跟beanFactory一样的强大,是spring的上下文

     3.ApplicationContext的事件机制:

           ApplicationContext的事件机制利用的是观察者设计模式。

          ApplicationContext有两个事件:

             1.ApplicationEvent:容器事件,必须由ApplicationContext发布。

             2.ApplicationListener:监听器,可由容器的任何监听器Bean担任。

        与所有的事件监听器都是一样的,由事件源、事件和事件监听器组成

       //其对象spring容器事件

       public class EmailEvent extends ApplicationEvent{

        }

      //容器的事件监听类必须实现ApplicationListener监听

       public class EmailNotifier implements ApplicationListener
       {
//该方法会在容器发生事件时自动触发
public void onApplicationEvent(ApplicationEvent evt){

         }

      }

    //spring 中xml配置文件

       <bean class="listener.EmailNotifier"/>

     当创建spring容器的时候相应的spring监听事件就会创建、加载spring容器,就会触发spring的容器事件。

       

              

            


0 0