参照https://blog.csdn.net/u013248535/article/details/55100979/
1.首先利用idea创建一个空的maven项目
空的maven项目结构如图
2.在pom.xml文件中引入springboot的必要依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.cp</groupId>
<artifactId>springboot-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.1.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
3.在名为java目录下创建controller文件夹,在controller文件夹下新建一个简单的测试类SampleController
@Controller
@EnableAutoConfiguration
public class SampleController {
@RequestMapping("/")
@ResponseBody
String home() {
return "Hello World!";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(SampleController.class, args);
}
}
4 运行这个main函数,在浏览器上打开http://localhost:8080/ ,就会看到页面上打印出hello word!
与我之前所熟悉的ssm框架的启动模式不同的是,ssm框架需要安装tomcat,将项目的war包放到tomcat上,启动tomcat服务器才可以完成部署。springboot的框架,他有一个入口main函数,在main函数中调用SpringApplication的run()方法,这个方法中应该集成了tomcat,将tomcat作为插件融入,使用户以最原始的java执行的方法(main方法)启动项目
5 在上面的基础上搭建简单的mvc的web应用
在java包下创建entity、repository、service文件夹分别存放实体类、Dao层实体方法接口和业务层实现类
entity:
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Integer id;
public String name;
public String age;
public Integer getId() {
return id;
}
public User setId(Integer id) {
this.id = id;
return this;
}
public String getName() {
return name;
}
public User setName(String name) {
this.name = name;
return this;
}
public String getAge() {
return age;
}
public User setAge(String age) {
this.age = age;
return this;
}
}
repository:
public interface UserRepository extends JpaRepository<User,Integer> {
@Query("select t from User t where t.name = :name")
User findBYUserName(@Param("name") String name);
}
service:
@Service
public class UserService {
@Autowired
private UserRepository userRepositoty;
public User findUserByName(String name){
User user = null;
try{
user = userRepositoty.findBYUserName(name);
}catch (Exception e){}
return user;
}
}
controller
@Controller
public class UserController
{
@Autowired
private UserService userService;
@RequestMapping(value = "/user/index")
public String index(){
return "user/index";
}
@RequestMapping(value = "/user/show",method = RequestMethod.GET)
@ResponseBody
public String show(@RequestParam(value = "name")String name){
User user = userService.findUserByName(name);
if(null != user)
return user.getId()+"/"+user.getName();
else return "null";
}
}
地址 http://localhost:8080/user/index 旨在实现页面的跳转,html页面实现
地址 http://localhost:8080/user/show 旨在实现查询数据并显示到页面实现
6 在resource包下创建application.propetites文件,配置服务器发布端口和编码,数据库连接,JPA和视图层控制
#server
server.port=8080
server.tomcat.uri-encoding=utf-8
#MySQL
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123
#Spring Data JPA
spring.jpa.database=MYSQL
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
# Naming strategy
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
# stripped before adding them to the entity manager)
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
#视图层控制
spring.mvc.view.prefix=classpath:/templates/
spring.mvc.view.suffix=.html
spring.mvc.static-path-pattern=/static/**
7 在pom.xml中引入所需要的相关依赖(MySQL连接驱动 以及Spring Data JPA,thymeleaf模板引擎)
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-thymeleaf -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
<version>1.4.0.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-jpa -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>1.5.1.RELEASE</version>
</dependency>
8 在resource包下创建templates和static,分别存放html页面和脚本文件
9 在java包下创建configuration包存放配置类配置扫描包的位置,包括入口类
Entry:
@SpringBootApplication
@ComponentScan(basePackages = "com.cp")
class Entry {
public static void main(String[] args) throws Exception {
SpringApplication.run(Entry.class, args);
}
}
JpaConfiguration :
@Order(Ordered.HIGHEST_PRECEDENCE)
@Configuration
@EnableTransactionManagement(proxyTargetClass = true)
@EnableJpaRepositories(basePackages = "com.cp.repository")
@EntityScan(basePackages = "com.cp.entity")
public class JpaConfiguration {
@Bean
PersistenceExceptionTranslationPostProcessor persistenceExceptionTranslationPostProcessor(){
return new PersistenceExceptionTranslationPostProcessor();
}
}
在测试的时候出现了,找不到/user/mapping的错误,目前我没有找到原因,只是修改了包的结构,在java包下新增加了com和cp包,更改了configuration的包的引用才可以