基于注解配置:
ioc.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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">
<!-- 开启自动扫描(自动检测+自动装配) -->
<context:component-scan base-package="com.mitu.bean"/>
</beans>
用户类
//@Scope("prototype") // 作用域,prototype每次创建一个新的实例
@Component //控制反转(Bean的id默认为类名首字母小写)
public class User {
@Value("张三") //设置默认值
private String name;
//@Qualifier("address")通过byName精准装配
@Autowired //默认使用byType,如果无法匹配,则使用byName (依赖注入)
private Address address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
@Override
public String toString() {
return "User [name=" + name + ", address=" + address + "]";
}
}
地址类:
@Component //控制反转
public class Address {
private String houserNo;//房间号
private String postCode;//邮编
public String getHouserNo() {
return houserNo;
}
public void setHouserNo(String houserNo) {
this.houserNo = houserNo;
}
public String getPostCode() {
return postCode;
}
public void setPostCode(String postCode) {
this.postCode = postCode;
}
}
测试类:
public class IoCTest {
private ApplicationContext aContext;
public IoCTest() {
//加载IoC容器
aContext = new ClassPathXmlApplicationContext("com/mitu/ioc/ioc.xml");
}
//自动装配Bean+自动检测Bean
public void autowireBean() {
User user = (User)aContext.getBean("user");
System.out.println(user);
}
public static void main(String[] args) {
IoCTest iCTest = new IoCTest();
iCTest.autowireBean();
}
}