spring 简单介绍之 IOC
Spring IOC
一. IOC(控制反转)
原来由 java类,new()对象
的方式;
把创建对象、调用对象的过程交付给 spring
,由 Bean
来创建对象。
底层原理
xml解析(dom4j)
+ 工厂模式 + 反射
ApplicationContext(BeanFactory)接口
IOC容器
的核心接口(实例化、定位、配置应用程序中的对象,建立对象的依赖)。
以下接口:
BaenFactory(顶级接口)
内置的使用接口,只有简单的功能。
加载配置文件时,不会创建对象,在获取或使用对象时,才创建对象。
ApplicationContext
,继承实现了 BeanFactory
提供更强大的功能、更多的扩展。
在启动时,就把配置文件中的 Bean 全部实例化。
二. DI(依赖注入)
有参构造:<constructor-org>
set
方法:<property name="" value="">
,使用 外部bean
;加上 ref=""
p:命名空间
:<bean p:name="">
三. Bean
通过 bean标签
来创建对象
<bean id="" class="">
id
唯一表示,class
指定的类(包名.类名)
3.1. Bean 生命周期
- 无参构造创建实例
set
注入属性- 初始化
init()
- 普通方法
- 销毁
destory()
3.2. Bean 作用域
- 单例(默认)
singleton
两个对象的地址是一样的,<bean id="" class="" scpoe="singleton">
。 - 原形,每次都会创建一个新的
propertype
<bean id="" class="" scpoe="propertype">
3.3. Bean 懒加载
默认加载配置文件时,就初始化所有的 bean
。
配置 按需加载Bean
:
<beans default-init-lazy="true">
,在 bean
根目录的最后。
3.4. Bean 创建对象
- 有参和无参
- 静态工厂方法
- 实例工厂方法
- 实现
FactoryBean
接口:简单的工厂模式 + 装饰模式,对象是有getObject()
方法决定。
3.5. 集合/utils
utils
<utils:list id="myList">
<value>list1</value>
<value>list2</value>
<value>list3</value>
</utils:list>
List和Set
<property name="list" ref="myList"/>
<property name="list" >
<list>(set)
<value>list1</value>
</list>
<property>
Map
<property name="map" >
<map>
<entry key=“k1” value="v1"/>
</map>
<property>
Property
<property name="prop">
<props>
<prop key="k1">v1</prop>
</props>
</property>
3.6. 外部配置文件(数据库连接)
<context:property-placeholder location="classpath:db.properties"/>
<bean id="" class="">
<property name="dirver" value="{jdbc.dirver}">
......
</bean>
四. 自动装配
spring
会自动根据匹配的属性进行注入。
byName
byType
no
default
constructor
注解 @
- 使用在类、方法、属性上面
- 类(4 个语义化注解)
@Controller;servlet
@Service
;业务@Repository
;Dao、Mapper
@Component
;其他公共类
@AutoWire
Service层
要使用Dao层
的方法:
在service层
中使用自动装配:
@AutoWire
private UserMapper userMapper;
注意
在 .xml文件中
要配置包扫描
<context:component-scan base-package="扫描的包名"/>
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于