-
SpringBoot启动的时候通过**@EnableAutoConfiguration**注解找到META-INF/spring.factories配置文件中所有的自动配置类,并对其进行加载,
-
TanhuaAutoConfiguration它实际上就是一个javaConfig形式的Spring容器配置类,它们都有一个**@EnableConfigurationPerperties**的注解,通过这个注解启动XXXProperties命名的类去加载全局配置中的属性,如server.port,而XXXProperties通过@ConfigurationProperties注解将全局配置文件中的配置与当前类的属性进行绑定,从而实现自动装配
1 在app-server中调用自动配置类,这个类的配置文件就需要 配置 系统需要的属性
2 在auto-config项目中,抽离公共的环境配置
2. 注册百度云 3. 找到人脸识别
3 通过@ConfigurationProperties读取公共的环境配置
4 编写xxTemplate,实现短信发送业务
5 在spring.factories中通过@EnableAutoConfiguration自动加载模板类
<!--百度人脸识别API-->
<dependency>
<groupId>com.baidu.aip</groupId>
<artifactId>java-sdk</artifactId>
<version>4.8.0</version>
</dependency>
8. 书写BaiduProperties
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix="baidu.api")
@Data
public class BaiduProperties {
private String appId;
private String apiKey;
private String secretKey;
}
9. 书写BaiDuYunTemplate
import com.baidu.aip.face.AipFace;
import com.tanhua.autoconfig.properties.BaiduProperties;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class BaiDuYunTemplate {
@Autowired
private BaiduProperties baiduProperties;
public BaiDuYunTemplate(BaiduProperties baiduProperties) {
this.baiduProperties = baiduProperties;
}
public boolean detect(String imgURL){
HashMap<String, String> options = new HashMap<String, String>();
options.put("face_field", "age");
options.put("max_face_num", "2");
options.put("face_type", "LIVE");
options.put("liveness_control", "LOW");
// 初始化一个AipFace
AipFace client = new AipFace(baiduProperties.getAppId(), baiduProperties.getApiKey(), baiduProperties.getSecretKey());
System.out.println(client);
// 可选:设置网络连接参数
client.setConnectionTimeoutInMillis(2000);
client.setSocketTimeoutInMillis(60000);
// 可选:设置代理服务器地址, http和socket二选一,或者均不设置
// client.setHttpProxy("proxy_host", proxy_port); // 设置http代理
// client.setSocketProxy("proxy_host", proxy_port); // 设置socket代理
System.out.println("imgURL="+imgURL);
// 调用接口
String image = imgURL;
String imageType = "BASE64";
// 人脸检测
JSONObject res = client.detect(image, imageType, options);
System.out.println(res.toString(2));
Integer error_code = Integer.valueOf(res.get("error_code").toString());
return error_code==0;
}
}
10. 书写BaiduAutoConfiguration
import com.tanhua.autoconfig.properties.BaiduProperties;
import com.tanhua.autoconfig.template.BaiDuYunTemplate;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
@EnableConfigurationProperties({
BaiduProperties.class
})
public class BaiduAutoConfiguration {
@Bean
public BaiDuYunTemplate baiDuYunTemplate(BaiduProperties baiduProperties){return new BaiDuYunTemplate(baiduProperties);}
}
11. 人脸识别应用
@RestController
@RequestMapping("/user")
public class UserController {
@Resource
BaiDuYunTemplate baiDuYunTemplate;
@Resource
HttpServletRequest httpServletRequest ;
@DubboReference
private UserApi userapi;
@DubboReference
private UserInfoApi userInfoapi;
@PostMapping("/loginReginfo/head")
public ResponseEntity loginHeader( MultipartFile headPhoto){
try {
InputStream is = headPhoto.getInputStream();
String path = ossTemplate.uploadToOSS(headPhoto, "face/");
boolean detect = baiDuYunTemplate.detect(path);
if (detect==false){
throw new RuntimeException("人脸检测失败!!");
}
return ResponseEntity.ok(null);
} catch (Exception e) {
System.out.println(e.getMessage());
}
return ResponseEntity.ok(null);
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)