诀情式浮生若梦吧 关注:23贴子:423
  • 8回复贴,共1

【一步一个脚印】Spring4的简单笔记

取消只看楼主收藏回复

我爱学习,学习使我快乐。


IP属地:浙江1楼2016-12-14 15:58回复
    了解spring
    Spring 作者:Rod Johnson;
    官方网站:http://spring.io/
    最新开发包及文档下载地址:http://repo.springsource.org/libs-release-local/org/springframework/spring/


    IP属地:浙江2楼2016-12-14 15:58
    回复
      配置文件(bean.xml)
      例:(java对象调用people对象中的值)
      Xmlns命名空间,xsi是名称,xsi:schemaLocation为xsi的具体地址。
      <bean id="java(相当于创建的一个对象)" class="对象类所在的位置">
      <property name=”tester(接口)” ref=”people(调用对象id)”></property>
      </bean>
      //获取bean创建的对象,对其操作:
      ApplicationContextac=new ClassPathXmlApplicationContext("beans.xml");
      类 创建的对象=(类)ac.getBean("对象");
      例:
      ApplicationContextac = newClassPathXmlApplicationContext("beans.xml");
      Peoplepeople = (People)ac.getBean("people");
      System.out.println(people);


      IP属地:浙江3楼2016-12-14 16:00
      回复
        贰、 Spring Ioc(控制反转 InverseofControl)依赖注入,
        一种重要的面向对象编程法则削减计算机程序的耦合问题,轻量级spring框架的核心;主要是把业务代码分离出来,由spring来管理ioc容器bean;
        1)属性注入
        <bean id="people"class="entity.People" >
        <property name="id"value="1"></property>
        <property name="name"value="summer"></property>
        <property name="age"value="16"></property>
        </bean>
        2)构造方法注入(类型,索引,联合)
        <bean>//类型
        <constructor-arg type="int"value="1"></constructor-arg>
        <constructor-arg type="String"value="sum"></constructor-arg>
        <constructor-arg type="int"value="15"></constructor-arg>
        </bean>
        <bean>//索引
        <constructor-arg index="0"value="1"></constructor-arg>
        <constructor-arg index="1"value="sum"></constructor-arg>
        <constructor-arg index="2"value="15"></constructor-arg>
        </bean>
        联合即两者都用。
        3)工厂方法注入(非静态,静态)
        创建一个工厂类Factory:
        //非静态
        Public class Factory {
        public People createObj(){ //People为另一个类
        Peoplep=new People();
        p.setId(0);
        p.setName("非静态");
        p.setAge(23);
        return p;
        }
        //静态 可以不用定义工厂bean
        public static People createObj1(){ //静态方法
        People p1=new People();p1.setId(0); p1.setName("静态"); p1.setAge(33); return p1; }}
        Beans.xml中:
        <!-- 非静态 factory-bean表示哪个工厂生产,factory-method表示工厂生产哪个方法创建 -->
        <bean id="factory" class="factory.Factory"></bean>
        <bean id="people2" factory-bean="factory" factory-method="createObj"> </bean>
        <!-- 静态 -->
        <bean id="people3" class="factory.Factory" factory-method="createObj1"></bean>


        IP属地:浙江4楼2016-12-14 17:13
        回复
          叁、注入参数
          JUnit4 可以进行单元测试,添加单元测试的jar包,测试单个用例
          创建测试类,每个案例都需要在上面加上@Test的注解,不然无法正常测试。
          1.基本类型值
          正常的获取一个bean的数据。
          2.注入bean
          引入另外一个bean,在xml中使用ref获取另外一个bean 的属性;
          <propertyname=”属性名” ref=”people(注入bean的id)”></property>
          3.内部bean
          与内部类相似,直接在内部写另一个bean;如:
          <bean class=” ”>
          <property name=”属性名” value=”值”></property>
          </bean>
          4.null 值
          与内部bean有点类似,
          <bean class=” ”>
          <null></null>
          </bean>
          5.级联属性
          直接获取在bean中获取另一个未创建bean的对象并给其赋值,需要在类文件中new出该对象。
          <property name=”对象名.属性” value=”赋值”></property>
          6.集合类型属性
          List集合:List<String>aa=new ArrayList<String>()
          <property name=”属性名” >
          <list>
          <value>值</value>
          <value>值</value>
          </list>
          </property>
          Set集合:Set<String>bb=new HashSet<String>()
          与list集合一样,将<list>标签改成<set>
          Map集合:Map<String, String> cc=new Map< String, String >()
          <property name=”属性名” >
          <map>
          <entry>
          <key><value>123</value></key>
          <value>abc</value>
          </entry>
          <entry>
          <key><value>abc</value></key>
          <value>123</value>
          </entry>
          </map>
          </property>
          Properties属性集合:如多个地址Propertiesaddr=new Properties()与map有点类似
          <property name=”addr” >
          <props>
          <prop key=”addr1”>值</ prop >
          < prop key=”addr2”>值</ prop >
          </ props>
          </property>


          IP属地:浙江本楼含有高级字体6楼2016-12-14 17:16
          回复
            伍、方法注入
            Spring bean 作用域默认是单例singleton;可以通过配置prototype ,实现多例;
            <bean id=”” class=”” scope=”prototype”>
            <propertyname=”属性名” value =” ”></property>
            </bean>
            方法注入lookup-method
            将需要获取的对象设置成抽象方法,可以实现每次获取的都是新的bean
            将property属性替换成<lookup-method name=”getDog” bean=”dog”/>


            IP属地:浙江本楼含有高级字体8楼2016-12-14 17:17
            回复
              陆、方法替换
              获取其他对象的方法,people2类先继承一个接口MethodReplacer
              写入people1的bean中,用于替换1中的方法
              <replacer-method name=”getDog” bean=”people2”></replacer-method>


              IP属地:浙江9楼2016-12-14 17:17
              回复
                柒、bean之间的关系
                1,继承;
                可以定义一个抽象的bean,使用在标签内添加abstract=”true”属性定义抽象, 并且可在bean中添加一些公共属性,以方便其他bean的继承;
                子bean使用属性parent继承抽象类,不用再写class地址,不同的属性可以在bean中重写。
                2,依赖;
                在bean中添加depends-on=”依赖bean的id”,需要先加载依赖的bean才能获取当前bean。
                3,引用;
                引入另外一个bean,在bean中添加一条属性,使用ref获取另外一个bean;


                IP属地:浙江10楼2016-12-14 17:17
                回复
                  捌、bean的作用范围
                  1,singleton Springioc 容器中仅有一个Bean 实例,Bean 以单例的方式存在; 2,prototype 每次从容器中调用Bean 时,都返回一个新的实例;
                  伍中方法注入的配置:<bean id=””class=”” scope=”prototype”></bean>
                  3,request 每次HTTP 请求都会创建一个新的Bean;
                  4,session 同一个HTTP Session 共享一个Bean;
                  5,global session 同一个全局Session 共享一个Bean,一般用于Portlet 应用环境;
                  6,application同一个Application 共享一个Bean;


                  IP属地:浙江11楼2016-12-14 17:18
                  回复