• spring一些总结


    Spring中三种实例化bean的方法:
    1)使用类构造器
      <bean id="orderService" class="cn.itcast.OrderService"/>
     
    2)使用静态工厂方法实现实例化
      <bean id="orderService" class="cn.itacast.OrderFactory" factory-method="createOrder"/>
      public class OrderFactory{
           public static OrderServiceBean createOrder(){
                 return new OrderServiceBean();
           }
      }
     3)使用实例工厂方法实例化
       <bean id="orderServiceFactory" class="cn.itcast.service.OrderFactory"/>
       <bean id="orderService" factory-bean="personServiceFactory" factory-method="createOrder"/>
       public class OrderFactory{
           public static OrderServiceBean createOrder(){
                 return new OrderServiceBean();
           }
      }
      Bean的作用域:
      .singleton
        在每一个Spring Ioc容器中一个bean定义只有一个对象实例。默认情况下会在容器启动的时候初始化
        bean。但是我们可以指定Bean节点的lazy-init="true"来延迟初始化bean,这时候只有第一次使用
        bean的时候才会初始化bean。如:
        <bean id="xxx" class="类的全类名" lazy-init="true"/>
        如果想对所有bean都应用延迟初始化,可以在根节点beans设置defult-lazy-init="true",如下:
        <beans default-lazy-init="true"...>
      .prototype
         每次从容器获取的bean都是新的对象。
      .request
      .session
      .global session
     注入依赖对象
       1)基本类型对象注入
       <bean id="orderService" class="OrderServiceBean">
            <constructor-arg index="0" type="java.lang.String" value="xxx"/>  //构造器注入
            <property name="name" value="zhao"/>  //属相setter方法注入
       </bean>
       2)注入其他bean
       方法1:
            <bean id="orderDao" class="service.OrderDaoBean"/>
            <bean id="orderService" class="service.OrderServiceBean">
                      <property name="orderDao" ref="orderDao"/>
            </bean>
       方法2:使用内部bean(内部bean不能被其他bean使用)
             <bean id="orderService" class="service.OrderServiceBean">
                       <property name="orderDao">
                                <bean class="service.OrderDaoBean"/>
                       </property>
             </bean>
    集合装配类型:
       public class OrderServiceBean {
                  private Set<String> sets=new HashSet<String>();
                  private List<String> lists=new ArrayList<String>();
                  private Properties properties=new Properties();
                  private Map<String,String> maps=new HashMap<String,String>();
     
                  //setter和getter方法省略
                  .....
       }
    集合的配置文件如下:
    <?xml version="1.0" encoding="UTF-8"?>
     
       <bean id="order" class="cn.itcast.service.OrderServiceBean">
              <property name="lists">
                    <list>
                            <value>hujingwei</value>
                            <value>wanglei</value>
                    </list>
              </property>
     
              <property name="sets">
                      <set>
                              <value>set</value>
                      </set>
              </property>
     
             <property name="maps">
                     <map>
                             <entry key="hujingwei" value="26" />
                             <entry key="wanglei" value="25" />
                   </map>
              </property>
     
             <property name="properties">
                  <props>
                            <prop key="12">sss</prop>
                 </props>
              </property>
     
    </bean>
    </beans>
     
    自动装配
      在java代码中,使用@Autowired或@Resource注解方式进行装配,这两个注解的区别是:
      @Autowired默认是按类型装配,@Resource默认是按名称装配,当找不到名称匹配的时候
      才按照类型装配。
      @Autowired注解是按照装配类型进行装配的,默认情况下,依赖的对象必须存在,如果
      允许为null值,可以设置它的required属性为false。如果我们想按照名称装配,可以
      结合@Qualifier注解一起使用。如下:
      @Autowired
      @Qualifier("personOrderBean")
      private PersonDao personDao;
  • 相关阅读:
    ES6语法记录
    关于Vue中 render: h => h(App) 的具体含义的理解
    在Vue中结合render函数渲染指定组件
    访问者模式(Visitor)_java实现
    自底向上集成 Bottom-Up
    基于功能集成 Function-Based
    分层集成(线性关系) Layers
    持续集成(高频集成、每日集成) Continuous/High-frequency
    Selenium实现点击click()
    Selenium自动化之点击下拉框选项操作
  • 原文地址:https://www.cnblogs.com/hujingwei/p/4737378.html
Copyright © 2020-2023  润新知