1、两种实现方式
- 注解方式(如@Autowired,@Resource,@Required)
- 配置文件(如xml)
2、四种注入方式
- Set方法注入:set注入是最简单、最常用的注入方式,支持注解+xml。
- 构造器注入:指带有参数的构造函数注入,支持注解+xml。
- 静态工厂的方法注入:通过调用静态工厂的方法来获取自己需要的对象,只支持xml。
- 实例工厂的方法注入:获取对象实例的方法不是静态的,所以你需要首先new工厂类,再调用普通的实例方法,只支持xml。
3、代码示例
- set方法+注解方式
public class UserService {
@Autowired
private UserDao userDao;
public void login() {
userDao.login();
}
}
- set方法+xml方式
<bean name="userService" class="com.obob.service.UserService">
<property name="userDao" ref="userDao" /><!--这里是property-->
</bean>
<bean name="userDao" class="com.obob.dao.UserDao"></bean>
- 构造器+注解方式
public class UserService {
private UserDao userDao;
@Autowired
public UserService(UserDao userDao) {
this.userDao = userDao;
}
public void login() {
userDao.login();
}
}
- 构造器+xml方式
<bean name="userService" class="com.obob.service.UserService">
<!--这里是constructor-arg-->
<constructor-arg index="0" ref="userDao"></constructor-arg>
</bean>
<bean name="userDao" class="com.obob.dao.UserDao"></bean>
- 静态工厂方法+xml方式
<bean name="userService" class="com.obob.service.UserService">
<!--property属性-->
<property name="staticUserDao" ref="staticUserDao" />
</bean>
<!--UserDao staticUserDao=Factory.initUserDao() -->
<bean name="staticUserDao" class="com.obob.Factory" factory-method="initUserDao"></bean>
- 实例工厂方法+xml 方式
<bean name="userService" class="com.obob.service.UserService">
<property name="staticUserDao" ref="staticUserDao" />
</bean>
<!--UserDao staticUserDao=factory.initUserDao() -->
<bean name="staticUserDao" factory-bean="factory" factory-method="initUserDao"></bean>
<!--Factory factory = new Factory() -->
<bean name="factory" class="com.obob.Factory"></bean>
- @bean方式
@Configuration
public class AppConfig {
@Bean
public MyBean myBean(){
return new MyBean();
}
}