原型模式就是new出来多个对象,每个对象的hashcode都是不一样的
原型模式就是克隆一个类或者多个类,
浅拷贝就是克隆他的引用地址,当一个对象里面的内容变化,另一个克隆对象跟着变化
深拷贝就是创建一个新的对象,当一个对象里面的内容变化,另一个克隆对象不会跟着变化
在和第三方系统进行对接的时候,他们只提供了生产环境的接口地址,测试环境是没有接口地址的
但是我们又想要有测试环境的数据,这时候怎么办呢?
创建组织机构类
package com.example.demo.entity;
import lombok.Data;
/**
* 组织机构
* @param
* @return
* @throws Exception
*/
@Data
public class Org {
//主键
private Long id;
//组织名称
private String orgName;
//组织编码
private String orgCode;
}
创建组织机构配置类
在开发环境我们自己造组织机构的数据,通过@Profile指定那个环境
在生产环境对接第三方的接口数据
package com.example.demo.config;
import com.example.demo.entity.Org;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
/**
*
* 组织机构配置类 @Bean+@Configuration 配合一起使用
* @param
* @return
* @throws Exception
*/
@Configuration
public class OrgConfig {
/**
*
* 开发环境启动的时候调用这个方法 注入到ioc容器中
* @param
* @return
* @throws Exception
*/
@Profile("dev")
@Bean
public Org devOrg(){
System.out.println("开发环境");
Org org=new Org();
org.setId(1L);
org.setOrgName("开发环境组织");
org.setOrgCode("001");
return org;
}
/**
*
* 生产环境启动的时候调用这个方法注入到ioc容器中
* @param
* @return
* @throws Exception
*/
@Profile("prod")
@Bean
public Org prodOrg(){
//todo 这里对接生产环境的接口数据
System.out.println("生产环境");
Org org=new Org();
org.setId(2L);
org.setOrgName("生产环境组织");
org.setOrgCode("002");
return org;
}
}
在控制层使用组织机构
package com.example.demo.controller;
import com.example.demo.entity.Org;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class OrgController {
@Autowired
private Org org;
/**
*
* 获取组织信息
* @param
* @return
* @throws Exception
*/
@GetMapping("/test")
public void test(){
System.out.println(org);
}
}
在配置中指定prod 那么获取的就是生产环境的组织机构
在配置指定dev,获取的组织机构就是开发环境的