Spring之Bean、依赖注入和自动装配

Spring之Bean、依赖注入和自动装配

  • 概述:
    • Spring Bean
    • Spring依赖注入(DI)

概述:

此篇博客主要记录学习Spring时一些比较重要的知识点和遇到的坑。。。

Spring Bean

  1. Bean定义
    Bean在我看来就是构成应用程序的支柱,是体现Spring IOC技术的重要标志。IOC简单来说就是将原始的通过new一个对象来实例化转换为交给Spring IOC容器来管理来获取实例化对象,而这些对象在Spring IOC容器中就是一个个Bean。
    我们可以通过以下方式在xml文件中简单配置一个Bean

     
    

    class属性是必须的,用来指定创建bean的全类名,可以通过id或者name来唯一标识这个bean。

    除此之外:
    scope属性:用来指定bean的作用域,在非Web项目下主要为singleton(默认值)和prototype两种属性,其中singleton表示在加载xml文件时便装载这个bean然后从始至终提供给你使用的都是同一个bean,而prototype则表示你每次请求一个bean时都重新装载一个全新的bean给你。

    autowire属性:表示在自动装载bean时依据什么标准,常用的主要是byName属性和byType属性,byName属性表示通过名字来自动装载bean,主要与setter方法配合使用,例如你有一个setMyBean()方法。
    那么通过以下配置便可以对Test.Bean类中的MyBean属性进行自动装载(id中第一个字母要小写

    
    

    对于byType属性则是根据类型进行自动装载,如果Demo1类中有一个Demo2类的demo2属性,并且在xml文件中配置了Demo2类的bean,那么只需要在Demo1的bean中声明autowire为byType则可以对demo2进行自动装配

Spring依赖注入(DI)

1.基于构造函数
基于构造函数的依赖注入一般引用与某个bean拥有带参数的构造方法。如果某个参数只是一个int,String,double之类的值,那么可以直接通过value来设置值,如果参数为另一个bean,则需要通过ref来设置。详情见代码
假如有以下一个构造函数

```
public Demo1(int x,Demo2 demo){
	......
}
```

那么我们在xml文件中可以这样配置(可以与index或者type配合使用)



	
	

2.基于Set函数
当容器调用一个无参的构造函数或者通过一个无参的静态factory方法来初始化bean的时候,外面就就可以通过基于set函数的依赖注入来对bean的属性进行设置,所以在bean对应的类中必须存在相应的set函数,与基于构造函数不同的地方就是通过property元素来进行配置。


		//注意name用来指定要设置的属性名,首字母要小写
     

3.Spring注入集合
如果在bean中某个属性为List、Set、Map等类型的,那么我们就可以在property标签内部使用list、set、map等标签取代value进行设置,例如我们要配置一个List属性的Items。


	
		
			item1
            item2
            item3
            item4
		
	

注意在list、set标签中,需要用value对每个值进行设置,而map标签则需要用entry分别设置键key和值value

你可能感兴趣的:(Spring)