目录
一.基于配置文件的IOC
1.利用Spring容器中获取对象
Step1:创建maven工程,在pom文件中添加Spring的核心jar包
<dependencies> <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.1.6.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-context --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.1.6.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-core --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.1.6.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-expression --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>4.1.6.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.commons/com.springsource.org.apache.commons.logging --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>com.springsource.org.apache.commons.logging</artifactId> <version>1.1.1</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-aop --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>4.1.6.RELEASE</version> </dependency> <dependency> <groupId>org.apache.maven.wagon</groupId> <artifactId>wagon-provider-api</artifactId> <version>1.0</version> </dependency> </dependencies>
Step2:创建Spring核心配置文件
Step3:从Spring容器中获取对象
- 创建实体类
- xml文件中定义bean标签
- 创建ApplicationContext容器,并取出对象
<bean id="stu" class="pojo.Student"></bean> <!-- 等同于Student student = new Student(); id是创建的对象的名称,唯一标识这个bean class是创建对象的类型 启动容器的同时,这个对象就被创建了 -->
public static void getStudent(){ //2.从Spring容器中取出对象,得先创建容器对象,并启动才能取对象 ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); Student stu = (Student) ac.getBean("stu"); }
2.利用配置文件注入-通过Spring给对象赋值
使用setter注入
要求
使用setter注入时,实体类中必须有无参构造和set方法。
因为使用setter注入时,要先创建出对象,再给对象赋值,所以要有无参构造。
简单类型注入
通过property,name,value
public class Student { private String name; private int age; public Student() { System.out.println("学生无参构造"); } public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } }
<bean id="stu" class="pojo.Student"> <property name="name" value="张三"></property> <property name="age" value="18"></property> </bean>
引用类型注入
通过property name ref
public class Student { private String name; private int age; private School school; public Student() { System.out.println("学生无参构造"); } public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } public void setSchool(School school) { this.school = school; } }
<bean id="school" class="pojo.School"> <property name="name" value="青岛大学"></property> <property name="address" value="青岛"></property> </bean> <bean id="stu" class="pojo.Student"> <property name="name" value="张三"></property> <property name="age" value="18"></property> <property name="school" ref="school"></property> </bean>
引用类型的自动注入<