01:初识Spring

ApplicationContext.xml配置文件

bean标签属性

  • 1) 对象创建,单利/多利

    • scope=”singleton” 默认值,默认为单利,【service/dao/工具类】
    • scope=”prototype” 多利 【action对象】
  • 2)对象创建时期

    • scope=”singleton” 在启动(容器初始化之前),就已经创建号bean,而且只有一个
    • scope=”prototype” 在用到对象的时候,才创建
  • 3)延迟创建

    • lazy-init=”false” 默认为false,不延迟创建,即在启动时间的对象在启动的时候创建
    • lazy-init=”true” 延迟初始化,在使用对象的时候才创建,只对单利又影响
  • 4)创建对象之后,初始化/销毁

    • init-method=”方法名” 【对应对象的init_user方法,在对象创建之后执行】
    • destroy-method=”destroy” 【在调用容器对象的destroy的方法执行,容器必须是实现类(ClassPathXMLApplicationContext),而不是接口(ApplicationContext)】

SprintIOC容器

创建对象,使用XML文件的创建方式
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation=
        "http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 无参构造器 -->
    <bean id="user1" class="cn.itcast.b_create_obj.User" ></bean>

    <!-- 定义一个字符串,值是JackSpry -->
    <bean id="str" class="java.lang.String">
        <constructor-arg value="JackSpry"></constructor-arg>
    </bean>

    <!-- 带参构造器 -->
    <bean id="user2" class="cn.itcast.b_create_obj.User">
        <constructor-arg value="100" index="0" type="int"></constructor-arg>
        <constructor-arg index="1" type="java.lang.String" ref="str"></constructor-arg>
    </bean>

    <!-- 工厂类创建对象 -->
    <!-- 工厂类,实例方法 -->
    <!-- 先创建工厂 -->
    <bean id="factory" class="cn.itcast.b_create_obj.UserFactory"></bean>
    <!-- 在创建user对象,用factory的实例方法 -->
    <bean id="user3" factory-bean="factory" factory-method="getInstance"></bean>


    <!-- 工厂类,静态方法 -->
    <bean id="user" class="cn.itcast.b_create_obj.UserFactory" factory-method="getStaticInstance"></bean>
</beans>                


public class App {

    @Test
    public void testIOC() throws Exception {

        ApplicationContext ac=new ClassPathXmlApplicationContext("cn/itcast/b_create_obj/bean.xml");

        User user = (User)ac.getBean("user");
        System.out.println(user);
    }
}
处理对象之间的依赖关系
  • 给属性赋值

    • 通过构造函数
    • 通过set方法

      <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:context="http://www.springframework.org/schema/context"
          xsi:schemaLocation=
          "http://www.springframework.org/schema/beans 
          http://www.springframework.org/schema/beans/spring-beans.xsd
          http://www.springframework.org/schema/context 
          http://www.springframework.org/schema/context/spring-context.xsd">
      
      <!--######### 给对象的属性赋值 #########-->
      <!-- 1)通过构造函数 -->
      <bean id="user1" class="cn.itcast.c_property.User">
          <constructor-arg index="0" value="100"></constructor-arg>
          <constructor-arg index="1" value="Tom"></constructor-arg>
      </bean>
      
      <!-- 2)通过set方法属性注入值 -->
      <bean id="user2" class="cn.itcast.c_property.User">
          <property name="id" value="11"></property>
          <property name="name" value="hello"></property>
      </bean>
      
      <!-- 
          案例:action/service/dao
       -->
       <!-- dao instance -->
       <bean id="userDao" class="cn.itcast.c_property.UserDao" scope="singleton"></bean>
      
       <!-- service instance -->
       <bean id="userService" class="cn.itcast.c_property.UserService" scope="singleton">
          <property name="userDao" ref="userDao"></property>
       </bean>
      
       <!-- action instance -->
       <bean id="userAction1" class="cn.itcast.c_property.UserAction" scope="prototype">
          <property name="userService" ref="userService"></property>
       </bean>
      
      <!-- 内部bean -->
      <bean id="userAction2" class="cn.itcast.c_property.UserAction">
          <property name="userService">
              <bean class="cn.itcast.c_property.UserService">
                  <property name="userDao">
                      <bean class="cn.itcast.c_property.UserDao"></bean>
                  </property>
              </bean>
          </property>
      </bean>
      </beans>                
    • p名称空间

      <!--必须有xmlns:p才可以使用-->
      <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:p="http://www.springframework.org/schema/p"
          xmlns:context="http://www.springframework.org/schema/context"
          xsi:schemaLocation=
          "http://www.springframework.org/schema/beans 
          http://www.springframework.org/schema/beans/spring-beans.xsd
          http://www.springframework.org/schema/context 
          http://www.springframework.org/schema/context/spring-context.xsd">
      
      <!--######### 给对象的属性赋值 #########-->
      <!-- 
          给对象属性注入值:
              # p 名称空间给对象的属性注入值
              (spring3.0以上版本支持)
       -->
       <bean id="userDao" class="cn.itcast.c_property.UserDao"></bean>
      
       <bean id="userService" class="cn.itcast.c_property.UserService" p:userDao-ref="userDao"></bean>
      
       <bean id="userAction" class="cn.itcast.c_property.UserAction" p:userService-ref="userService"></bean>
      
       <!-- 
          p后面两种形式,都可以实现给属性赋值
              1. p: 属性名=赋值
              2. p: 属性引用=引用id
        -->
       <bean id="user" class="cn.itcast.c_property.User" p:id="100" p:name="Tomm"></bean>
      </beans>                
    • 自动装配

      • 根据名称自动装配,autowire=”byName”
        • 自动去IOC容器中找与属性名同名的引用的对象
          <!--######### 给对象的属性赋值 #########-->
          <bean id="userDao" class="cn.itcast.d_auto.UserDao"></bean>
          
          <bean id="userService" class="cn.itcast.d_auto.UserService" autowire="byName"></bean>
          
          <!-- 根据"名称"自动装配,userAction注入的属性,回去IOC容器中自动查找与属性同名的对象 -->
          <bean id="userAction" class="cn.itcast.d_auto.UserAction" autowire="byName"></bean>
          
          <!--同时也可以写到全局-->
          <?xml version="1.0" encoding="UTF-8"?>
          <beans xmlns="http://www.springframework.org/schema/beans"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xmlns:context="http://www.springframework.org/schema/context"
              xsi:schemaLocation=
              "http://www.springframework.org/schema/beans 
              http://www.springframework.org/schema/beans/spring-beans.xsd
              http://www.springframework.org/schema/context 
              http://www.springframework.org/schema/context/spring-context.xsd"
              default-autowire="byName">
          
              <!--######### 给对象的属性赋值 #########-->
              <bean id="userDao" class="cn.itcast.d_auto.UserDao"></bean>
          
              <bean id="userService" class="cn.itcast.d_auto.UserService"></bean>
          
              <!-- 根据"名称"自动装配,userAction注入的属性,回去IOC容器中自动查找与属性同名的对象 -->
              <bean id="userAction" class="cn.itcast.d_auto.UserAction"></bean>
          </beans>    
    • 注释
      • 注解可以与XML配置共同使用
      • @Resource 根据类型查找
      • @Resource(name=”名称”) 根据名称查找
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值