了解Spring框架
Spring容器框架
bean管理 构建容器 IOC控制反转
bean 对象标签
id/name 指定标识
class class位置(类全名)
parent 指定通用对象
abstract 该对象不直接创建, 通用对象
<bean id="pp" class="model.Type2" init-method="init" abstract="true">
<property name="name" value="1111"></property>
</bean>
<bean id="my" parent="pp">
<property name="id" value="2222"></property>
<property name="name" value="ssss"></property>
</bean>
singleton=“true | false” 单例模式
lazy-init=“true | false | dafault” 延迟处理
autowire="no | byName | byType | constructor | autodetect | default"自动注入
init-method=“method” springbean生命周期
destroy-method=“method”
factory-method=“method” 设置工厂类, 指定方法生产bean
factory-bean=“bean”
dependency-check(依赖检查,默认为“default”)
1、 none: 不进行依赖检查。
2、 objects: 只做对象间依赖的检查。
3、 simple: 只做原始类型和String类型依赖的检查
4、 all: 对所有类型的依赖进行检查。它包括了前面的objects和simple。
depends-on(依赖对象):这个Bean在初始化时依赖的对象,这个对象会在这个Bean初始化之前创建
**
scope 构建作用域
1、singleton Spring IOC容器中只会存在一个共享的bean实例
2、prototype 每次使用到, 都会产生一个新的bean实例
3、request 每次请求到, 都会产生一个新的bean实例
4、session 每个新的会话, 都会产生一个新的bean
5、global session 每次新的目标源(门户, 触发源)会话, 都会产生一个新的bean
property 属性标签
name 属性名称
value 属性值 与ref互斥
ref 引用spring对象id或名称
constructor-arg
index属性 指定构造参数的序号(从0开始)
type属性 指定构造参数的类型
ref属性 value属性
list/set/map/props
<list>
<bean class=" "></bean>
</list>
<list>
<value>Happer</value>
<value>Smell</value>
</list>
<map>
<entry key="1">
<ref bean="highTopic01"/>
</entry>
<entry key="2">
<ref bean="highTopic02"/>
</entry>
</map>
<props>
<prop key="driver">com.mysql.jdbc.Driver</prop>
<prop key="url">jdbc:com.mysql://localhost:3030/test</prop>
<prop key="username">root</prop>
<prop key="password">root</prop>
</props>
DI依赖注入, 装配
no
<property name="t" ref='a1' ></property>
byType 根据属性的类型, 自动查找部件装配—byType就是按Bean的Class的类型
被装配类中的setter方法的参数类型要与bean的class的类型一样,才能自动装配到
byName 根据属性的名称, (id或者name属性)自动查找部件装配
constructor 根据构造参数的类型, 自动查找部件装配到构造方法
如果都未符合, 将使用默认构造方法创建
autodetect byType和 constructor 选择, 有默认构造方法
default
调试
代码加载spring容器
ApplicationContext act=new ClassPathXmlApplicationContext("aa.xml");
Type2 t=(Type 2)act.getBean("my");
使用junit测试
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:aa.xml"})
public class junit_test{
@Autowired
Type t;
@Test
public void ee(){
System.out.println(t.getName());
}
}
获取容器部件
Autowired 根据byType
@Autowired
Type t;
Resource 根据于byName
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.2</version>
</dependency>
@response(name="my")
Type2 t2;
Inject&Named 根据2种
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
@Inject
Type my;
@Inject
@Named("my")
Type2 t;