IOC(Inverse of Control)反转控制的概念,就是将原本在程序中手动创建对象的控制权,交由给Spring框架管理,由Spring框架管理其对象控制权,包括创建和销毁等一系列的生命周期。
DI(Dependency Injection)依赖注入,就是IOC的一种表现方式。利用Xml解析+Java反射机制技术,读取配置文件给对象赋值。
传统方式(面向接口编程):
//1.通过new的方式构造对象
UserService userService = new UserServiceImpl();
工厂模式:
//创建一个工厂
class FactoryBean{
/*
* 工厂提供获取UserService的方法
*/
public static UserService getUserService(){
//通过new的方式构造对象
return new UserServiceImpl();
}
}
//通过获取UserService
UserService userService = FactoryBean.getUserService();
open-close原则下改造:
bean.xml配置文件
<bean id="userService" class="com.demo.service.UserServiceImpl">
<!--设置属性-->
<property name="name" value="同桌小明">
</bean>
//创建一个工厂
class FactoryBean{
/*
* 工厂提供根据id获取对象的方法
*/
public static Object getBean(String id){
...
1.解析xml,获取id和class的关系
2.反射生成对象
}
}
//通过获取UserService
UserService userService = FactoryBean.getBean("userService");
感受Spring的工厂模式:
bean.xml配置文件
<!-- 配置一个 bean -->
<bean id="userService" class="com.demo.service.UserServiceImpl"/>
//1.创建Spring的IOC容器,交给Spring的工厂管理
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean.xml");
//2.从容器中获取Bean,通过工厂获得类(三级缓存)
UserService userService = (UserService) applicationContext.getBean(“userService”);
本文地址:https://blog.csdn.net/weixin_35799945/article/details/107330013
如对本文有疑问, 点击进行留言回复!!
详解SpringBoot修改启动端口server.port的四种方式
网友评论