spring中IOC容器创建对象,对象依赖关系处理
来源:互联网 发布:2017新开放域名后缀 编辑:程序博客网 时间:2024/06/14 09:49
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配置一起使用。
- spring中IOC容器创建对象,对象依赖关系处理
- SSH框架之Spring的IOC容器的创建对象、对象依赖关系(1)
- 【Spring】IOC容器--对象依赖关系(七)
- Spring IOC、对象依赖关系
- 【Spring】IOC容器创建对象
- 第36天(就业班) spring引入、专业术语、spring六大模块、bean创建对象的细节、IOC容器、对象依赖关系、自动装配、注解方式
- SSH框架之Spring的IOC容器的对象依赖关系(2)
- SSH框架之Spring的IOC容器的对象依赖关系(3)
- spring容器IOC创建对象<二>
- 【Spring】IOC容器--创建对象(六)
- 【Spring】对象依赖关系
- spring IOC容器创建对象的三种方式
- Spring的核心之IoC容器创建对象
- spring非IOC容器中的对象获取IOC容器中对象的方法
- SSM框架之spring学习1——创建对象,处理依赖关系
- spring容器 创建对象
- Spring创建容器对象
- Filter中访问spring ioc容器中的对象的方式
- sql重重之重
- Python实现八皇后
- 关于input文本框,设置为readonly后,onchage事件无响应处理方案
- 【二分优化】Preparing for Merge Sort CodeForces
- 1043. 输出PATest(20)--Python
- spring中IOC容器创建对象,对象依赖关系处理
- 使用JSONObject将json文件转化成对象
- php使用kibana实例1-----查询数据
- Nginx之虚拟服务器配置
- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:con
- 高mysql千万级大数据SQL查询优化几条经验
- 聊聊Hadoop:图解HDFS是个啥
- 各种类型文件的Content Type
- MD5和SHA-1