Spring入门(一)——IOC
- 2020 年 3 月 11 日
- 筆記
1. IOC定义
Inversion of Control,减低计算机代码间的耦合度,对象的创建交给外部容器完成,不用再new了
2. 流程
2.1 创建Bean对象
package bean; public class User { private String name; private String email; private String password; /** * 省略了getters/setters * @author Howl */ //构造函数 public User(String name, String email, String password) { super(); this.name = name; this.email = email; this.password = password; } }
2.2 配置applicationContext.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 上面是约束的固定写法 --> <!-- 配置Bean对象给Spring容器 --> <!-- id 唯一表示 --> <!-- class 对应的Bean对象 --> <!-- scope 作用域,单例和多例 --> <bean id="User" class="bean.User" scope="singleton"></bean> </beans>
2.3 通过容器获取Bean对象
//通过配置文件获取上下文 applicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); //通过上下文获取Bean对象,不用通过new方式了 User user = ac.getBean("User");
3. 其他细节
3.1 带参构造函数创建对象
<bean id="User" class="bean.User" scope="singleton"> <!--constructor指定构造函数的参数类型、名称、第几个--> <constructor-arg index="0" name="name" type="String" value="Howl"></constructor-arg> <!--参数为对象时,value改为ref="" --> </bean>
3.2 装载集合
<bean id="userService" class="bb.UserService" > <constructor-arg > <list> //普通类型 <value></value> //引用类型 <ref></ref> </list> </constructor-arg> </bean>
3.3 注解
1.先引入context名称空间 xmlns:context="http://www.springframework.org/schema/context" 2.开启注解扫描器 <context:component-scan base-package=""></context:component-scan> 3.在Bean对象中添加@Component(name ="User"),就不用在配置文件中写<Bean>标签了