多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 控制反转 在使用new来创建对象的时候,我们可以主动的控制去创建什么样的类,但是在使用工厂模式和IOC容器的时候,我们不能控制具体获得了什么类,我们把创建类的权利交给了工厂或IOC,控制权发生了转移,这个就叫做控制反转.这样就降低了耦合度. ![](https://box.kancloud.cn/3d3e0ca1bb98a8290b1da432fb3457af_1347x532.png) ## applicationContext.xml 在src下面创建applicationContext.xml配置文件: ~~~ <?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" 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.xsd"> <beans> <!--id:可以为任意值,但是在整个配置文件唯一.class:要实例化类的全限定名. scope可以选择singleton或者prototype.singleton是单实例.配置文件只要一加载,就会创建对象,放在spring容器中,当所有人过来访问spring容器要的时候(getBean()),所有人用的都是同一个对象. prototype是多实例,配置文件加载,不创建对象,当每个人过来getBean()的时候,getBean()一次创建一次放在容器. --> <bean id="user" class="com.like.domain.User" scope="prototype"/> </beans> </beans> ~~~ 代码: ~~~ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); //加载配置文件 User user = (User)applicationContext.getBean("user"); //获取bean User user1 = context.getBean("user", User.class); //第二种方式,不用强转 System.out.println(user); System.out.println(user1); ~~~ ## 对象销毁时机 * singleton:当spring容器关闭的时候. * protype:长时间不用就自动被垃圾回收机制回收了. ## bean初始化方法和销毁方法 指定两个时机方法,可以随意命名. ~~~ <bean id="user" class="com.like.domain.User" scope="prototype" init-method="init" destroy-method="destroy"/> ~~~ bean: ~~~ public class User { private String name; private Integer age; public void init() { System.out.println("init"); } public void destroy() { System.out.println("destroy"); } public User() { System.out.println("create"); } @Override public String toString() { return "User{" + "name='" + name + '\'' + ", age=" + age + '}'; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } } ~~~ 结果: ``` create //创建 init //初始化 销毁时机不确定 ``` 如果是singleton:配置文件加载就执行初始化方法,容器关闭调用销毁方法. ## import 标签 用于导入外部的配置文件. ~~~ <import resource="web_bean.xml"/> ~~~