Spring学习总结(入门)
.xml文件里面放置的是装配的bean
这里是配置Spring的地方,很简单的一点就是使用bean来创建对象.bean里面可以嵌套bean
大概梳理一下脉络就是在主类里面创建了一个userservice对象,这个对象是通过spring,建立的,在test.xml里面,userservive对象指向的是 UserDAO的实现类
这样在建立UserService的时候就会连带的把UserDAO的实现类一起实例化,实例化之后,通过userservice的bean的property即setUserDAO方法.
将这个实例化的类set成功,完成了自动装配
scope属性:生命周期
scope属性的内容其实比较简单,就那么几个类,新连接一个bean的时候可能会重新建立一个,也可能会一直用同一个
autowire属性:自动装配
主要使用byName
和 byType
两种属性
自动装配 autowire,主要有两种属性,byName,byType…
byName
是在UserService里面寻找属性值,比如说这里userService里面有getUserDAO这个方法,那么就开始在test.xml里面寻找这个name
为UserDAO
的bean,找到则装配…
byType
是根据类型来装配,也就是说在主bean UserService
里面有getDAO1
和getDAO2
两个属性值,那么就会在xml
文件里里面寻找class=XXX.getDAO1/getDAO1的子类.并且自动装配.
byName
比较好理解,只要名字起的和要装配的属性一样就完事了.
byType
我的理解是根据类来装配,但是这样装配会出现一个问题(看马士兵视频学习时候知道的),如果在xml
文件里有两个getDAO1/getDAO1的子类
的bean,就会出现找不到具体的类的问题…
```
<!--就像这样装配,两个实现了同一个子类的bean的name不一样,但是class一样,还是会装配失败,这个我认为需要注意一下.-->
<bean id="userDAO1" class="com.netizen.spring.UserDAOimpl">
<bean id="userDAO" class="com.netizen.spring.UserDAOimpl">
</bean>
<bean id="user" class="com.netizen.spring.UserService" scope="prototype" autowire="byType">
<!--<property name="userDAO" ref="u"/>-->
</bean>
```
Spring有两种方式比如上面的常见的xml格式.还有下面的这个annotation格式.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- 打开Spring的Annotation支持 -->
<context:annotation-config/>
<!-- 设定Spring 去哪些包中找Annotation -->
<context:component-scan base-package="com.wfg"/>
</beans>
意思就是用注解来做呗…
-
@Autowired
- 一般写在set方法上,可以自动装配,默认byType,使用
@Qualifier(name)
来指定byName.
@Resource
- 按照名字来寻找,找不到才按类型,可以用Resource(name = ‘’) @compponent(“name”)
- 在要调用的类上头写,表示为组件.
在xml
里写<context:component-scan base-package="com.netizen.spring"
表示在这个包里面搜索组件
@pre和@post标签
- 创建之后毁灭之前和
xml
的初始化和结束方法标签一致