spring之创建实例对象和属性注入

一、spring创建实例对象的三种方法

因为并不是每个bean都是普通类,有些是通过工厂来获取的,而工厂就有静态工厂和实例工厂,所以spring创建实例对象有三种情况,

默认无参构造:就是编写IOC的helloworld的那种方式,直接<bean id="" class="">

静态工厂:由于是静态工厂,所以通过工厂类直接调用创建实例的方法就可以了。

            <bean id="" class="工厂全限定类名" factory-method="静态方法">

实例工厂:需要先创建出工厂实例,然后在由工厂创建对象

            <bean id="myFactoryId" class="工厂全限定类名"></bean>

            <bean id="" factory-bean="myFactoryId"  factory-method=""></bean>

二、属性依赖注入

        手动装配:一般进行配置信息都采用手动

                       1.基于xml装配 :构造方法 丶setter方法

                       2. 基于注解装配

        自动装配:struts和spring整合可以自动装配

                        byType:按类型装配

                        byName:按名称装配

                        constructor构造装配,

                        auto: 不确定装配。

         之前的那个依赖注入其实也属于属性依赖注入这一范畴中,在最开始我们演示IOC(控制反转)也就是spring帮我们创建实例时,那只是通过无参构造方法进行创建,那么在实际开发中,这样创建肯定是不行的,所以我们需要在spring的配置文件中配置一些属性信息,使spring帮我们创建时,可以直接将对象的一些属性也注入进去。

一.构造方法注入

1.方法一(不常用)

                  1.配置

                  

                  

                   2.测试

                  

                 3.结果

                 

2.方法二(开发中常用)

类型type 和  索引 index
            <constructor-arg index="0" type="xxx" value="1"></constructor-arg>
            <constructor-arg index="1" type="xxx" value="2"></constructor-arg>

      1.配置

      2.测试

   

      3.结果

二丶setter方法注入 

               

* 普通数据 
			<property name="" value="值">
			等效
			<property name="">
				<value>值
		* 引用数据
			<property name="" ref="另一个bean">
			等效
			<property name="">
				<ref bean="另一个bean"/>

               1.配置

                       

                       

                      

               2.测试

                         

               3.结果

                           

三丶P命名空间注入和spEL注入 

          由于一般都不会用,所以只做了解。想了解的小伙伴自己去翻阅书籍把!

四丶集合注入

          注:集合的注入都是给<property>添加子标签

                        数组:<array>
			List:<list>
			Set:<set>
			Map:<map> ,map存放k/v 键值对,使用<entry>描述
			Properties:<props>  <prop key=""></prop>

1.数组

                           

2.list

                           

3.set

                            \

4.map

                           

5.properties

                           

五丶注解注入

注解格式:@xxx

      使用注解:必须对使用注解的地方进行扫描,不然注解没用。而扫描需要做两件事

1、添加名称空间,

  在我们找配置文件中约束的位置那:spring-framework-3.2.0.RELEASE\docs\spring-framework-reference\html\xsd-config.html 找到context的名称空间。

      

                         

 2、扫描指定的目录

 注解:

1、@Component  替代  <bean id="" class=""> 可以配置任意bean,在所在类上面添加该注解即可,

      @Component("userId") userId相当于bean中的id属性值

      

 

2.web开发,提供3个@Component注解衍生注解(功能一样)取代<bean class="">

        @Repository :dao层

        @Service:service层

        @Controller:web层

3.依赖注入      给私有字段设置,也可以给setter方法设置

        普通值:@Value("")

        引用值:

                 方式1:按照【类型】注入

                         @Autowired

                 方式2:按照【名称】注入1

                         @Autowired

                         @Qualifier("名称")

                 方式3:按照【名称】注入2

                         @Resource("名称")

4.使用

           

        

猜你喜欢

转载自blog.csdn.net/qq_39665334/article/details/83153159