本次只是简单的运用SpringBoot搭建框架,对其原理并不做深入的探究
1.POM文件
1 <?xml version="1.0" encoding="UTF-8"?>
2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4 <modelVersion>4.0.0</modelVersion>
5
6 <groupId>com.hxyz</groupId>
7 <artifactId>media</artifactId>
8 <version>0.0.1-SNAPSHOT</version>
9 <packaging>jar</packaging>
10
11 <name>media</name>
12 <description>Demo project for Spring Boot</description>
13
14 <parent>
15 <groupId>org.springframework.boot</groupId>
16 <artifactId>spring-boot-starter-parent</artifactId>
17 <version>1.4.0.RELEASE</version>
18 <relativePath/> <!-- lookup parent from repository -->
19 </parent>
20
21 <properties>
22 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
23 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
24 <java.version>1.8</java.version>
25 <mybatis.version>3.2.2</mybatis.version>
26 </properties>
27
28 <dependencies>
29 <dependency>
30 <groupId>org.springframework.boot</groupId>
31 <artifactId>spring-boot-starter-web</artifactId>
32 </dependency>
33 <dependency>
34 <groupId>mysql</groupId>
35 <artifactId>mysql-connector-java</artifactId>
36 </dependency>
37 <!-- mybatis -->
38 <dependency>
39 <groupId>org.mybatis</groupId>
40 <artifactId>mybatis</artifactId>
41 <version>${mybatis.version}</version>
42 </dependency>
43 <dependency>
44 <groupId>org.mybatis</groupId>
45 <artifactId>mybatis-spring</artifactId>
46 <version>1.2.0</version>
47 </dependency>
48
49 <dependency>
50 <groupId>org.springframework.boot</groupId>
51 <artifactId>spring-boot-starter</artifactId>
52 </dependency>
53 <dependency>
54 <groupId>org.springframework.data</groupId>
55 <artifactId>spring-data-commons</artifactId>
56 </dependency>
57 <!-- connection pool -->
58 <dependency>
59 <groupId>org.springframework</groupId>
60 <artifactId>spring-jdbc</artifactId>
61 </dependency>
62 <dependency>
63 <groupId>org.apache.tomcat</groupId>
64 <artifactId>tomcat-jdbc</artifactId>
65 </dependency>
66 <dependency>
67 <groupId>mysql</groupId>
68 <artifactId>mysql-connector-java</artifactId>
69 </dependency>
70 <dependency>
71 <groupId>com.fasterxml.jackson.core</groupId>
72 <artifactId>jackson-databind</artifactId>
73 <version>2.7.0</version>
74 </dependency>
75 <dependency>
76 <groupId>net.sf.json-lib</groupId>
77 <artifactId>json-lib</artifactId>
78 <version>2.4</version>
79 <classifier>jdk15</classifier>
80 </dependency>
81 <dependency>
82 <groupId>com.fasterxml.jackson.module</groupId>
83 <artifactId>jackson-module-jaxb-annotations</artifactId>
84 <version>2.7.0</version>
85 </dependency>
86 <dependency>
87 <groupId>net.sf.json-lib</groupId>
88 <artifactId>json-lib</artifactId>
89 <version>2.4</version>
90 <classifier>jdk15</classifier>
91 </dependency>
92 <dependency>
93 <groupId>dom4j</groupId>
94 <artifactId>dom4j</artifactId>
95 <version>1.1</version>
96 </dependency>
97 <dependency>
98 <groupId>org.apache.commons</groupId>
99 <artifactId>commons-lang3</artifactId>
100 <version>3.1</version>
101 </dependency>
102 <dependency>
103 <groupId>org.codehaus.jackson</groupId>
104 <artifactId>jackson-mapper-asl</artifactId>
105 <version>1.9.13</version>
106 </dependency>
107 <dependency>
108 <groupId>org.codehaus.jackson</groupId>
109 <artifactId>jackson-core-asl</artifactId>
110 <version>1.9.13</version>
111 </dependency>
112 </dependencies>
113
114 <build>
115 <plugins>
116 <plugin>
117 <groupId>org.springframework.boot</groupId>
118 <artifactId>spring-boot-maven-plugin</artifactId>
119 </plugin>
120 </plugins>
121 </build>
122
123
124 </project>
2.通过MyBatis-generate自动生成实体类和mapper
3.配置XML文件
在resource下面新建applicationContext.xml
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
|
在resource路径下新建application.properties
1 server.port=8089 2 jdbc.driver=com.mysql.jdbc.Driver 3 jdbc.url=jdbc:mysql://localhost:3306/ 4 jdbc.username=jack 5 jdbc.password=123456
至此,我们的xml文件已经配置好了,我们可以写一个简单的控制器来测试下数据库是否已经连通
4.测试是否连通
1 public interface FactoryService {
2
3 public List<FactoryEntity> findFactory();
4
5 }
@Service
public class FactoryServiceImpl implements FactoryService{
@Resource
private FactoryEntityMapper factoryMaaper;
@Override
public List<FactoryEntity> findFactory() {
FactoryEntityExample example=new FactoryEntityExample();
Criteria createCriteria = example.createCriteria();
List<FactoryEntity> selectByExample = factoryMaaper.selectByExample(example);
return selectByExample;
}
}
1 @RestController
2 @RequestMapping(value="front/factory")
3 public class FactoryController {
4 @Resource
5 private FactoryService factoryService;
6
7 @RequestMapping(value="list")
8 @ResponseBody
9 public ResponseVo queryAll(){
10 ResponseVo responseVo=new ResponseVo();
11 List<FactoryEntity> factoryEntityList = factoryService.findFactory();
12 responseVo.setData(factoryEntityList);
13 return responseVo;
14
15 }
16
17
18 }
所以,我们猜一下,现在我请求下,数据会正常的返回么
我们现在请求下
http://localhost:8089/front/factory/list
返回的是
1 Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.hxyz.media.mapper.FactoryEntityMapper] found for dependency [com.hxyz.media.mapper.FactoryEntityMapper]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.annotation.Resource(shareable=true, lookup=, name=, description=, authenticationType=CONTAINER, type=class java.lang.Object, mappedName=)}
2 at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1406) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2.RELEASE]
3 at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1057) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2.RELEASE]
4 at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1019) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2.RELEASE]
5 at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java:518) ~[spring-context-4.3.2.RELEASE.jar:4.3.2.RELEASE]
6 at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:496) ~[spring-context-4.3.2.RELEASE.jar:4.3.2.RELEASE]
7 at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:627) ~[spring-context-4.3.2.RELEASE.jar:4.3.2.RELEASE]
8 at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:169) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2.RELEASE]
9 at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2.RELEASE]
10 at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:318) ~[spring-context-4.3.2.RELEASE.jar:4.3.2.RELEASE]
11 ... 34 common frames omitted
没有找到FactoryEntityMapper,但是我们明明是在xml中配置了mapperScannerConfigue
这是因为springboot在启动后并不会主动的去读取xml文件,只会根据类文件间的依赖去加载spring的bean类,所以springboot并没有发现xml中的配置
我们可以在启动类中添加
@ImportResource(locations = "classpath*:/applicationContext.xml")
完整的启动类如下
1 @ImportResource(locations = "classpath*:/applicationContext.xml")
2 @SpringBootApplication
3 //@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class})
4 public class MediaApplication {
5
6 public static void main(String[] args) {
7 SpringApplication.run(MediaApplication.class, args);
8 }
9 }
这时我们再启动就可以返回数据了