SpringXml写法
<!-- 通知Spring 在启动时自动创建DemoBean
类型的对象,并绑定标识ID为“demo” -->
<bean id="demo" class="day01.DemoBean"></bean>
<!-- 为Bean组件设置别名:为test设置别名demo -->
<alias name="test" alias="demo" />
<!-- 利用scope设置创建多个实例 -->
<bean id="test2" class="day02.TestBean"
scope="prototype"></bean>
<!-- 利用Spring调用对象的生命周期的管理方法 init-method 用于设定对象初始化方法 spring会在创建对象以后,自动执行初始化方法
destroy-method 用于设定Spring关闭容器时候 销毁之前执行 -->
<bean id="log" class="day02.LogWriter"
lazy-init="true"
init-method="init"
destroy-method="close" />
<!-- 设置了scope=prototype 后destroy-method 不在起作用 -->
<bean id="demoBean" class="day02.DemoBean" scope="prototype"
init-method="open" destroy-method="close" />
<!-- property用于注入Bean属性 Spring会在初始化对象时候,自动调用其setAxe 方法将axe1引用的对象注入 -->
<bean id="axe1" class="day02.Axe" />
<bean id="qiang" class="day02.Worker">
<property name="axe" ref="axe1"></property>
<!-- value 用于注入基本值:基本类型和字符串 -->
<property name="name" value="熊大" />
</bean>
<!-- 测试基本值的注入 使用value属性 -->
<bean id="example" class="day02.ExampleBean">
<property name="age" value="18"/>
<property name="price" value="188.8"/>
<property name="value" value="18.8"/>
<property name="name" value="Tom"/>
</bean>
Spring注解
@Component
@Lazy
@Autowired
注解扫描,当设置base-package=“day03”
以后,Spring会自动扫描day03和其子包
中的Spring注解,扫描到就创建的对应的Bean组件
<context:component-scan base-package="day03">
</context:component-scan>
@Component
@Lazy//设置为懒惰初始化 不设置的话 执行Spring会自动创建所有的Bean
public class Worker implements Serializable{
/*
* Spring会扫描所有组件
* 如果有组件的类型与Tool类型兼容就注入
* 如果有两个以上类型兼容的组件,就匹配组件的id名称
* 是否与变量名tool一致,如果一致就注入,没有就报错
*/
private String name="光头强";
private Tool tool;
@Autowired
public void setTool(Tool tool) {
System.out.println("settool");
this.tool = tool;
}
@Component("tool") //默认名为axe 找到多个时 会匹配这里的名称 找到名称相同的注入
public class Axe implements Tool,Serializable{
private String name="开天斧";
@Override
public String toString() {
// TODO Auto-generated method stub
return name;
}