spring IOC 和 DI

本文详细介绍了IOC容器创建对象的三种方式:无参数构造器、带参数构造器和工厂创建对象,以及依赖注入的四种方法:构造函数、set方法、p名称空间和注解。并深入探讨了注解在Spring框架中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IOC容器创建对象方式

  1) 调用无参数构造器

        <bean id="user1" class="com.text.entity.UserEntity" scope="prototype" />

   2) 带参数构造器

       <bean id="user2" class="com.text.entity.UserEntity">

       <constructor-arg name="name" type="java.lang.String"  value="张三"></constructor-arg>

       <constructor-arg name="age" type="java.lang.Integer"    value="18"></constructor-arg>

        </bean>

     3) 工厂创建对象

        <!-- 通过实例工厂方法创建 -->

        <bean id="factory" class="com.text.entity.ObjectFactory"></bean>

        <bean id="user3" factory-bean="factory" factory-method="getInstance"></bean>

        <!-- 通过静态工厂方法创建 -->

       <bean id="user4" class="com.text.entity.ObjectFactory"  factory-method="getStaticInstance"></bean>

依赖注入

       1) 通过构造函数

       2) 通过set方法给属性注入值(service中需要有Dao类的setter方法,实现原理是利用java反射机制。)

            <!-- dao instance -->   <bean id="userDao" class="cn.text.UserDao"></bean>

            <!-- service instance --> 

                      <bean id="userService" class="cn.text.UserService">

                                  <property name="userDao" ref="userDao"></property>

                       </bean>

       3) p名称空间 

        <!- - 给对象属性注入值: # p 名称空间给对象的属性注入值 (spring3.0以上版本才支持) -->

        <bean id="userDao" class="cn.text.UserDao"></bean>    

        <bean id="userService" class="cn.text.UserService" p:userDao-ref="userDao"></bean>

        <!-- 传统的注入:

          <bean id="user" class="cn.text.User" >

                           <property name="name" value="xxx"></property>

           </bean>     -->

          <!-- p名称空间优化后 -->

          <bean id="user" class="cn.text.User" p:name="Jack0001"></bean>

        4) 注解 

          注解方式可以简化spring的IOC容器的配置!

          使用注解步骤:

               1)先引入context名称空间  xmlns:context="http://www.springframework.org/schema/context"

                2)开启注解扫描

                   <context:component-scan base-package="com.text"></context:component-scan>

               3)使用注解

                   通过注解的方式,把对象加入ioc容器。

                   创建对象以及处理对象依赖关系,相关的注解:

                   @Component   指定把一个对象加入IOC容器

                   @Repository   作用同@Component; 在持久层使用

                    @Service      作用同@Component; 在业务逻辑层使用

                    @Controller    作用同@Component; 在控制层使用

                    @Resource     属性注入

总结:

         1) 使用注解,可以简化配置,且可以把对象加入IOC容器,及处理依赖关系(DI)
         2) 注解可以和XML配置一起使用。如果注解和xml同时配置同一个bean,那么注解无效,会先走xml

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值