※使用ResourceUtils工具类(基于GraphQL查询):
1 package cn.itcast.haoke.dubbo.api.graphql; 2 3 import cn.itcast.haoke.dubbo.server.service.HouseResourcesService; 4 import graphql.GraphQL; 5 import graphql.schema.GraphQLSchema; 6 import graphql.schema.idl.RuntimeWiring; 7 import graphql.schema.idl.SchemaGenerator; 8 import graphql.schema.idl.SchemaParser; 9 import graphql.schema.idl.TypeDefinitionRegistry; 10 import org.springframework.beans.factory.annotation.Autowired; 11 import org.springframework.context.annotation.Bean; 12 import org.springframework.stereotype.Component; 13 import org.springframework.util.ResourceUtils; 14 15 import javax.annotation.PostConstruct; 16 import java.io.File; 17 import java.io.IOException; 18 19 @Component 20 public class GraphQLProvider { 21 private GraphQL graphQL; 22 @Autowired 23 private HouseResourcesService houseResourcesService; 24 @PostConstruct 25 public void init() throws IOException{ 26 File file = ResourceUtils.getFile("classpath:haoke.graphqls"); 27 GraphQLSchema graphQLSchema = buildSchema(file); 28 this.graphQL = GraphQL.newGraphQL(graphQLSchema).build(); 29 } 30 private GraphQLSchema buildSchema(File file){ 31 TypeDefinitionRegistry typeRegistry = new SchemaParser().parse(file); 32 RuntimeWiring runtimeWiring = buildWiring(); 33 SchemaGenerator schemaGenerator = new SchemaGenerator(); 34 return schemaGenerator.makeExecutableSchema(typeRegistry,runtimeWiring); 35 } 36 private RuntimeWiring buildWiring(){ 37 return RuntimeWiring.newRuntimeWiring().type("HaokeQuery",builder->builder.dataFetcher("HouseResources" 38 ,enviroment->{ 39 Long id = enviroment.getArgument("id"); 40 return this.houseResourcesService.queryHouseResourcesById(id); 41 })).build(); 42 } 43 @Bean 44 public GraphQL graphQL(){ 45 return graphQL; 46 } 47 }
※使用注解方式:
♬属性文件:mock-data.properties
mock.indexMenu={"data":{"list":[{"id":1,"menu_name":"二手房","menu_logo":"home","menu_path":"/home","menu_status":1,"menu_style":null},{"id":2,"menu_name":"新房","menu_logo":null,"menu_path":null,"menu_status":null,"menu_style":null},{"id":3,"menu_name":"租房","menu_logo":null,"menu_path":null,"menu_status":null,"menu_style":null},{"id":4,"menu_name":"海外","menu_logo":null,"menu_path":null,"menu_status":null,"menu_style":null},{"id":5,"menu_name":"地图找房","menu_logo":null,"menu_path":null,"menu_status":null,"menu_style":null},{"id":6,"menu_name":"查公交","menu_logo":null,"menu_path":null,"menu_status":null,"menu_style":null},{"id":7,"menu_name":"计算器","menu_logo":null,"menu_path":null,"menu_status":null,"menu_style":null},{"id":8,"menu_name":"问答","menu_logo":null,"menu_path":null,"menu_status":null,"menu_style":null}]},"meta":{"status":200,"msg":"测试数据"}}
♬编写配置文件属性类:
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.context.annotation.PropertySource; /*用于读取配置文件中的内容*/ @Configuration @PropertySource("classpath:mock-data.properties") @ConfigurationProperties(prefix = "mock") @Data public class MockConfig { private String indexMenu; private String indexInfo; ... }
※基于org.apache.ibatis.io.Resources类获取字节输入流读取文件
package cn.itcast.mybatis01.dao; import cn.itcast.mybatis01.domain.User; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.IOException; import java.io.InputStream; import java.util.List; import static org.junit.Assert.*; public class MybatisTest { public static void main(String[] args) throws IOException { //1.读取配置文件 InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml"); //2.创建SqlSessionFactory的构建者对象 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); //3.使用构建者创建工厂对象SqlSessionFactory SqlSessionFactory factory = builder.build(in); //4.使用SqlSessionFactory生产SqlSession对象 SqlSession SqlSession = factory.openSession(); //5.使用SqlSession创建dao接口的代理对象 IUserDao userDao = SqlSession.getMapper(IUserDao.class); //6.使用代理对象执行查询所有方法 List<User> users = userDao.findAll(); for (User user : users) { System.out.println(user); } SqlSession.close(); in.close(); } }
※使用类加载器,并利用工具包转为字符串:
import org.apache.commons.io.IOUtils; /*读取文件内容*/ public static String readFileToString(String fileName){ try { return IOUtils.toString(GraphQLSchema.class.getClassLoader().getResourceAsStream(fileName),"UTF-8"); } catch (Exception e) { e.printStackTrace(); } return null; }