01:初识Spring

来源:互联网 发布:js input name 数组 编辑:程序博客网 时间:2024/05/16 03:03

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=”名称”) 根据名称查找
原创粉丝点击