- Spring BeanFcatorcy(Bean工厂)
这是最简单的容器,主要作用是为依赖注入提供支持。
2、Spring ApplicationConntext(上下文)
BeanFcatorcy的子接口也被称作上下文。
控制反转(依赖注入)
控制反转指的是传统的程序是由程序本身来创建对象的,使用Spring后创建对象变成了由Spring创建和管理,程序只需要接收使用对象。
Spring IOC创建对象的几种方式
- 使用无参构造方法创建
User.java
public class User { private String User; public void setUser(String user) { User = user; } public User() { // TODO Auto-generated constructor stub System.out.println("无参方法创建User"); } public void show() { System.out.println("User= "+User); } } |
Test.java
public static void main(String[] args) { ApplicationContext context=new ClassPathXmlApplicationContext("Beans.xml"); User user=(User)context.getBean("user"); user.show(); } |
Beans.Xml
<bean name="user" class="com.user.User"> <property name="user" value="小明"></property> </bean> |
测试结果
- 通过有参构造方法
User.java
private String User; public void setUser(String user) { User = user; } public User(String User) { this.User=User; System.out.println("有参方法!!"); } public void show() { System.out.println("User= "+User); } |
Test.java不变
Beans.xml配置
a.使用index下标设置参数(下标从0开始)
<bean name="user" class="com.user.User"> <constructor-arg index="0" value="小明" ></constructor-arg> </bean> |
b.使用名称设置的方法
<bean name="user" class="com.user.User"> <constructor-arg name="User" value="小明" ></constructor-arg> </bean> |
c.使用变量的数据类型设置
<bean name="user" class="com.user.User"> <constructor-arg type="String" value="小明" ></constructor-arg> </bean> |
使用3种方法的运行结果都一样
- 使用工厂方法创建
- 静态工厂方法
public static User staticFcatorcy(String User) { return new User(User); } |
Beans.Xml配置文件
<constructor-arg index="0" value="小红"></constructor-arg> </bean> |
- 动态工厂方法
public class Fcatorcy { public User staticFcatorcy(String User) { return new User(User); }} |
Beans.xml配置
<bean name="user" factory-bean="userfcatorcy" factory-method=" staticFcatorcy "> <constructor-arg index="0" value="小红"></constructor-arg> </bean> <bean id="userfcatorcy" class="com.fcatorcy.Fcatorcy"></bean> |
测试结果