赞
踩
public interface UserMapper {
void getUser();
}
public class UserMapperImpl implements UserMapper {
public void getUser(){
System.out.println("默认获取的数据!");
}
}
public interface UserService {
void getUser();
}
public class UserServiceImpl implements UserService {
//业务层调Dao层
private UserMapper userMapper = new UserMapperImpl();
public void getUser() {
userMapper.getUser();
}
}
public class MyTest {
public static void main(String[] args) {
//用户实际调用业务层
UserServiceImpl userService = new UserServiceImpl();
userService.getUser();
}
}
public class UserMapperMysqlImpl implements UserMapper {
public void getUser() {
System.out.println("Mysql获取用户数据!");
}
}
public class UserServiceImpl implements UserService {
//业务层调Dao层
private UserMapper userMapper;
//set注入
public void setUserMapper(UserMapper userMapper) {
this.userMapper = userMapper;
}
public void getUser() {
userMapper.getUser();
}
}
控制反转IoC是一种设计思想,DI(依赖注入)是实现IoC的一种方法。没有IoC的程序中,我们使用面对对象编程,对象的创建与对象间的依赖关系完全硬编码在程序中,对象的创建由程序自己控制,控制反转后将对象转移给第三方,控制反转简单的说就是:获得依赖对象的方式反转了。可以使用xml配置实现IoC,也可以使用注解的形式,也可以零配置(自动装配)实现
Spring容器在初始化时先读取配置文件,再根据配置文件或元数据创建与组织对象存入容器中,程序使用时从IoC容器中读取需要的对象。
private String str;
<!--使用spring创建对象-->
<!--id:变量名 class:new的对象,property相当于给对象中的属性设置一个值-->
<bean id="hello" class="com.dmj.entity.Hello">
<property name="str" value="Spring"/>
</bean>
public class MyTest {
public static void main(String[] args) {
//获取对象
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//取出对象
Hello hello = (Hello) context.getBean("hello");
System.out.println(hello.toString());
}
}
<bean id="impl" class="com.dmj.dao.UserMapperImpl"/>
<bean id="mysqlImpl" class="com.dmj.dao.UserMapperMysqlImpl"/>
<bean id="oracleImpl" class="com.dmj.dao.UserMapperOracleImpl"/>
<bean id="UserServiceImpl" class="com.dmj.service.UserServiceImpl">
<property name="userMapper" ref="mysqlImpl"/>
</bean>
public class MyTest {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
UserServiceImpl userServiceImpl = (UserServiceImpl) context.getBean("UserServiceImpl");
userServiceImpl.getUser();
}
}
控制:以前对象由程序本身控制,创建使用Spring后,对象是Spring创建。
反转:程序本身不创建对象,而变成被动的接收对象。
依赖注入:利用set方法进行注入。
IoC是一种思想,由主动的编程变成被动的接收。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。