收集Spring开发者的编程习惯,整理开发过程使用的常用技术列表—>技术集A
收集常用技术(技术集A)的使用参数,整理开发过程中每个技术的常用设置列表—-->设置集B
初始化SpringBoot基础环境,加载用户自定义的bean和导入的其他坐标,形成初始化环境
将技术集A包含的所有技术都定义出来,在Spring/SpringBoot启动时默认全部加载
将技术集A中具有使用条件的技术约定出来,设置成按条件加载,由开发者决定是否使用该技术(与初始化环境比对)
将设置集B作为默认配置加载(约定大于配置),减少开发者配置工作量
开放设置集B的配置覆盖接口,由开发者根据自身需要决定是否覆盖默认配置
目录
以上的操作都是在自定义一个starter,别忘记clean后然后install,然后再需要使用的工程中导入该starter的坐标
使用#{beanName. attrName}读取bean的属性编辑
一、自定义starter
记录系统访客独立IP访问次数
需求分析
业务功能开发
package cn.it.service;
import org.springframework.beans.factory.annotation.Autowired;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;
public class IpCountService {
private Map<String,Integer> ipCount=new HashMap<String,Integer>();
//当前的request对象的注入工作由使用当前starter的工程提供自动装配
@Autowired
private HttpServletRequest httpServletRequest;
public void count(){
//每次调用当前操作,就记录当前访问的IP,然后累加访问次数
//1、获取当前的ip地址
String ip=httpServletRequest.getRemoteAddr();
//2、根据ip地址从map中取值,并递增
Integer count=ipCount.get(ip);
if(count==null){
ipCount.put(ip,1);
}else {
ipCount.put(ip, count + 1);
}
}
}
自动配置类
package cn.it.autoConfig;
import cn