SpringIOC容器

1) 创建对象

SpringIOC容器,是spring核心内容。

作用: 创建对象 & 处理对象的依赖关系

 

IOC容器创建对象:

创建对象, 有几种方式:

1) 调用无参数构造器

2) 带参数构造器

3) 工厂创建对象

工厂类,静态方法创建对象

工厂类,非静态方法创建对象


1) 调用无参数构造器

先看一下包结构。




建一个User实体类其中定义好无参构造器和有参构造器。



在bean.xml中加载无参构造方法



2) 带参数构造器


在bean.xml中加载有参构造方法



或者自己将要传方值另外定义好(不把代码写死)




工厂类,静态方法创建对象

3) 工厂创建对象


工厂类,非静态方法创建对象静态方法创建对象


建立一个测试类来使用一下:



 对象依赖关系

Spring中,如何给对象的属性赋值?  DI, 依赖注入】

1) 通过构造函数

2) 通过set方法给属性注入值

3) p名称空间

4)自动装配(了解)

5) 注解

 

1) 通过构造函数




2) 通过set方法给属性注入值



3) p名称空间


4)自动装配(了解) 

通过属性名称就行装配


全局的自动装配


通过属性类型就行装配

default-autowire="byType"

注意:当同类型对象存在两个时则会报错。

总结:

Spring提供的自动装配主要是为了简化配置; 但是不利于后期的维护。

(一般不推荐使用)


5) 注解

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

 

使用注解步骤:

1)先引入context名称空间

xmlns:context="http://www.springframework.org/schema/context"


2)开启注解扫描

<context:component-scan base-package="cn.itcast.e_anno2"></context:component-scan>


3)使用注解

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

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

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

@Resource     属性注入



   



也可以将括号中的内容省略(就是直接通过类型查找)

示例:



 或者我们可以按层结构进行注解

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

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

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

 示例:




注解也可以和bean创建对象一起使用

比如将持久层不加注解,然后在bean.xml中配置对象

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


总结:

1) 使用注解,可以简化配置,且可以把对象加入IOC容器,及处理依赖关系(DI)
2) 注解可以和XML配置一起使用。

 



 



Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐