Spring工厂常识

  1. 环境搭建
    1.   导入Sring对应的jar包
    2. 导入Spring依赖的commons-loggin包
    3. 导入log4j.properties在src下
    4. 导入ApplicationContext.xml在任意目录下
  2. 是一个轻量级的企业开发框架
    1.   核心:IOC , AOP编程
    2. IOC:也就是inverse of control 控制反转 
      1.   就是讲创建对象的权利转移到工厂中,从而实现解耦合和对于jdk功能的增强
      2. 对于常见的Spring工厂
        1.   本地使用的Spring工厂类  ClassPathXmlApplicationContext();
  3. 实际应用
    1. 对于单个配置中
      1.   控制对象创建的次数:单个:songleton
      2.   多个:protoprototype
    2.   如何使用
        1.       将对应的配置写入applicationContext.xml中
          <?xml version="1.0" encoding="UTF-8"?>
          <beans >
                      
                      
              <bean id="us" class="com.youyi.test.UserServiceimpl" scope="prototype"></bean>
              <--比如这里就是id就是相当于引用名,class就是实际上的全类名,也就是指向的类,体现了一部分解耦合-->
          <!--这里的关系依然是反射解决:通过id找到对应的class找到全类名生成对应的类对象再newInstance生成对应的类的对象--> </beans>
        2.     对应实际java的使用
          import org.springframework.context.ApplicationContext;
          import org.springframework.context.support.ClassPathXmlApplicationContext;
          
          public class BeanTest1 {
          
              public static void main(String[] args) {
          //这里就是创建spring工厂的本地实现类 ClassPathXmlApplicationContext cpc
          = new ClassPathXmlApplicationContext("classpath:/com/youyi/test/applicationContext.xml"); Object bean = cpc.getBean("us");    //通过实际的引用名去找到对应的class System.out.println(bean); Object bean2 = cpc.getBean("us");   //如果是单实例的选项的话这里bean和bean2打印出来的地址是一样的.但是如果是prototype的话二者属于多实例创建并不是同一个实例就不一样 System.out.println(bean2); } }

           

          <!--这里是xml文件还是配置的时候注意的地方:-->
          <bean id="addressa" class="com.youyi.test3.Address"> <property name="city" value="洛阳"></property> <property name="zipCode" value="471003"></property> </bean> <!--对象当属性要先配置好这个对象放到工厂里之后ref引用就好--> <bean id="user" class="com.youyi.test3.User"> <property name="username" value="zhangshun"></property> <property name="age" value="15"></property>//这是String和基本数据类型和包装类的写法 <property name="alive" value="true"></property> <property name="hobby">//这是集合和数组的写法 <list> <value>"抽烟"</value> <value>"喝酒"</value> <value>"烫头"</value> <value>"爱老婆"</value> </list> </property> <property name="friends">//这是map集合 <map> <entry key="1" value="张思梦"></entry> <entry key="2" value="杜梦媛"></entry> <entry key="3" value="嫣然"></entry> </map> </property> <property name="dateSourse">//这是properties文件对应的写法 <props> <prop key="c1">"连接池1"</prop> <prop key="c2">"连接池2"</prop> </props> </property> <property name="address" ref="addressa"></property>//这就是对象当属性的时候用ref指向的形式 </bean>

           

posted @ 2018-12-10 15:11  歌语苳文  阅读(109)  评论(0编辑  收藏  举报