SpringIoc的发展经历了三种方式:
- 1.通过new的方式创建
- 2.通过工厂模式获取不同的实例对象(需要自己写工厂)
- 3.通过ioc容器获取不同的实例对象(只需要自己配置即可)
1、目录结构
目录结构.png1.1 pom.xml
<dependencies>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.1.5.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.1.5.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
1.2 User实体类
package com.spring;
/**
* @Classname User
* @Description TODO 用户实体类
* @Date 2019/12/13 10:31 下午
* @Created by wangxianlin
*/
public class User {
private String id;
private String name;
private String address;
public void useCreateMethod(String name){
System.out.println("使用"+name+"方式创建对象");
}
public String getId() {
return id;
}
@Override
public String toString() {
return "User{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", address='" + address + '\'' +
'}';
}
}
1.3 CreteUserFactory
public class CreteUserFactory {
public static User getUser(){
return new User();
}
}
1.4 bean.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-3.0.xsd">
<bean id="User" class="com.spring.User"/>
</beans>
2、创建方式
2.1 传统的new方式
/***
* @Author wangxl
* @Description //TODO 通过new方式创建对象
* @Date 11:33 下午 2019/12/13
* @Param []
* @return void
**/
@Test
public void TestUser2(){
User user = new User();
user.setAddress("安徽省合肥市");
user.setId("1238784");
user.setName("HeloWxl");
System.out.println(user.toString());
user.useCreateMethod("new");
}
new.png
2.2 通过工厂创建
@Test
public void TestUser3(){
User user = CreteUserFactory.getUser();
user.setAddress("安徽省合肥市");
user.setId("1238784");
user.setName("HeloWxl");
System.out.println(user.toString());
user.useCreateMethod("factory");
}
factory.png
2.3 通过IOC创建
@Test
public void TestUser(){
//从spring容器获得 //1 获得容器
String xmlPath="bean.xml";
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
//2获得内容 --不需要自己new,都是从spring容器获得
User user = (User) applicationContext.getBean("User");
user.setAddress("安徽省合肥市");
user.setId("1238784");
user.setName("HeloWxl");
System.out.println(user.toString());
user.useCreateMethod("ioc");
}
ioc.png
网友评论