对spring boot 的一些补充
在具体的应用开发中可以使用 properties 配置文件或者 yaml 配置文件两种一般建议开发中首选 yml 格式的文件,文件后缀可以是 yml 或者 yaml。可以通过格式缩进的方式表达层次结构。解析 yml 格式的文件需要依赖 snakeyaml,这个依赖由 web-starter 依赖引入。Spring Boot 返回 Json 数据
XML 文件的解析 常见的解析工具有 DOM4j、JDOM 等,为了标准化 XML 文件解析,Java 中提出了 JAXP 规范,使用的解析模型有 1. DOM:将标记语言文档一次性加载进入内存中,在内存中形成一颗 DOM 树(服务器端常用) * 优点:操作方便,可以对文档进行 CRUD 的所有操作 * 缺点:一次性加载进入内存形成 DOM 树,非常消耗资源 2. SAX:逐行读取,基于事件驱动(安卓终端常用) * 优点:不消耗资源 * 缺点:只能读取,不能增删改public class Test2 { public static void main(String[] args) throws Exception { SAXParserFactory parserFactory = SAXParserFactory.newInstance(); SAXParser saxParser = parserFactory.newSAXParser(); final List<Student> studentList = new ArrayList<Student>(); 因为 SAX 解析并不缓存数据,所以 解析过程中的数据需要自行编程实现存储 saxParser.parse("xml02/students.xml", new DefaultHandler() { private Student student=null; private int flag=0; public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if ("student".equals(qName)) { student=new Student(); String id=attributes.getValue("id");//获取当前标签的指定名称的属性 if(id!=null && id.trim().length()>0) student.setId(id); }else if("name".equals(qName)) flag=1; else if("age".equals(qName)) flag=2; else if("sex".equals(qName)) flag=3; } @Override public void characters(char[] ch, int start, int length) throws SAXException { String tmp = new String(ch, start, length); if(tmp!=null && tmp.trim().length()>0){ if(flag==1) student.setName(tmp.trim()); else if(flag==2){ Integer kk=Integer.parseInt(tmp.trim()); student.setAge(kk); }else if(flag==3) student.setSex(tmp.trim()); } } @Override public void endElement(String uri, String localName, String qName) throws SAXException { flag=0; if("student".equals(qName)) studentList.add(student); } }); studentList.forEach(System.out::println); } }早期数据传输使用 xml 作为交互格式,例如 webservice 技术,但是由于 xml 解析比较麻烦,所以现在在项目开发中,在接口与接口之间以及前后端之间数据的传输都使用 Json 格式,在 Spring Boot 中接口返回 Json 格式的数据很简单,在 Controller 中使用@RestController 注解即可返回 Json 格式的数据,@RestController 也是Spring Boot 新增的一个复合注解。 源代码:其中 Target、Retention 和 Documented 是元注解 @Target({ElementType.TYPE}) 用于声明注解可以使用在什么地方,Type 表示可以使用在类上 @Retention(RetentionPolicy.RUNTIME) 用于声明注解需要保持到什么阶段,Runtime 表示注解在编译生成的字节码中一直保持到运行时 @Documented @Controller @ResponseBody public @interface RestController { String value() default ""; } 可 以看 出@RestController 注 解包 含 了 原来 的 @Controller 和@ResponseBody 注 解, 使 用 过 Spring 对@Controller 注解用于声明当前类是控制器类,@ResponseBody 注解是将返回的数据结构转换为 Json 格式。 所以在默认情况下,使用了@RestController 注解即可将返回的数据结构转换成 Json 格式,Spring Boot 中默认使用的 Json 解析技术框架是 jackson。点开 pom.xml 中的 spring-boot-starter-web 依赖,可以看到一个spring-boot-starter-json 依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-json</artifactId> <scope>compile</scope> </dependency> Spring Boot 中对依赖都做了很好的封装,可以看到很多 spring-boot-starter-xxx 系列的依赖,这是 Spring Boot的特点之一,不需要人为去引入很多相关的依赖了,starter-xxx 系列直接都包含了所必要的依赖,所以再次点进去上面这个 spring-boot-starter-json 依赖,可以看到: <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <scope>compile</scope> </dependency> <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jdk8</artifactId> <scope>compile</scope> </dependency> <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jsr310</artifactId> <scope>compile</scope> </dependency> <dependency> <groupId>com.fasterxml.jackson.module</groupId> <artifactId>jackson-module-parameter-names</artifactId> <scope>compile</scope> </dependency> 到此为止知道了 Spring Boot 中默认使用的 json 解析框架是 jackson。默认的 jackson 框架对常用数据类型的转 Json 处理 标签:jackson,springboot,Spring,Json,flag,student,String From: https://www.cnblogs.com/fenglei1/p/17572450.html