IDEA搭建SpringBoot离线⼯程的⽅法
SpringBoot的具体介绍可以参看其他⽹上介绍,这⾥就不多说了,就这⼏天的学习,个⼈理解,简⽽⾔之:
(1)它是Spring的升级版,Spring容器能做到的事情,它都能做到,⽽且更简便,从配置形式上来说,SpringBoot完全抛弃了繁琐的XML⽂件配置⽅式,⽽是替代性地⽤注解⽅式来实现,虽然本质来说,是差不多的(类似包扫描,注解扫描,类加载之类)。
(2)SpringBoot集成的插件更多,从⽽使⽤很多服务,都只是引⼊⼀个依赖,⼏个注解和Java类就可以⽤了,具体的参考相关⼿册。
(3)在Web应⽤开发这⼀块,之前的应⽤⼀般来说是打包成war包,再发布到相关服务器容器下(例如Tomcat),虽然SpringBoot也可以这么做,但在SpringBoot下更常见的形式是将SpringBoot应⽤打包成可执⾏jar包⽂件。之所以这么做,源于你可以直接将SpringBoot应⽤看成是⼀个Java Application,其Web应⽤可以没有webapp⽬录(更不⽤说l了),它推荐使⽤html页⾯,并将其作为静态资源使⽤。
下⾯具体记录⼀下,如何在IDEA下从零开始,⼀步步搭建SpringBoot Web应⽤,这⾥采⽤的是maven作依赖管理,新⼿起步,有任何疑问,请参考。
需要说明的是SpringBoot依赖的JDK版本为1.8及以上。
(1)File->new,选择maven,创建⼀个空项⽬,直接next.
(2)填写⼯程名
(3)next到底,成果创建⼀个基于maven的空Java项⽬,其⽬录结构是这样的:
(4)在pom⽂件中引⼊SpringBoot相关依赖
<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>
(5)新建⼀个controller 包,⽤于存放所有的controller,这⾥跟官⽅的⼀样,使⽤SampleController为第⼀个测试⽤例。代码如下:
/**
* Created by Song on 2017/2/15.
* 官⽅⽰例⼯程中的测试代码
*/
@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);
}
}
当然,⼀个基本的Web应⽤,结构肯定不会这么简单。下⾯要说的是,如何在上⾯的基础上,搭建⼀个具有MVC结构的完整的Web应⽤,其中数据库采⽤的是Mysql,ORM采⽤的是Spring Data JPA,前端页⾯采⽤js+html5。(当然还有其他的⽅式,例如ORM框架采⽤mybatis等,本⽂暂未涉及。)
(6)在resource⽬录下新建⼀个application.properties⽂件(或yml⽂件),命名与位置为SpringBoot
默认的配置⽂件。在该⽂件中,记录着所有的模块配置内容。例如Tomcat的端⼝(默认8080)以及编码⽅式等:
server.port=8080
(7)引⼊本项⽬中所需要的相关依赖(MySQL连接驱动以及Spring Data JPA,thymeleaf模板引擎)
<!-- mvnrepository/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>
<!-- mvnrepository/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>
<!-- mvnrepository/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)在application.properties中配置MySQL数据库连接信息
这⾥的数据库为本地数据库test,⽤户名和密码改成⾃⼰的
#MySQL
spring.datasource.sql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8
spring.datasource.username=****
spring.datasource.password=****
(9)在application.properties中配置Spring Data JPA
这⼀段的意思就是说,数据库类型为MYSQL,⽇志信息打印具体执⾏的sql语句,表更新策略以及Java类到数据库表字段的映射规则等,具体查看⽹络资料。
#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
(10)编写⼀个实体类User
@Table标签,指定数据库中对应的表名,id配置为主键,⽣成策略为⾃动⽣成
/**
* Created by Song on 2017/2/15.
* Model ⽤户
*/
@Entity
@Table(name = "tbl_user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String name;
private String password;
}
(11)基于JPA,实现DAO层(即数据库数据的增删改查操作)
新建UserRepositoty.java接⼝⽂件,源代码如下:
/**
* Created by Song on 2017/2/15.
* User表操作接⼝
*/
@Repository
public interface UserRepositoty extends JpaRepository<User,Long>{
@Query("select t from User t where t.name = :name")
User findByUserName(@Param("name") String name);
}
需要解释的是,Spring Data JPA提供了很多持久层接⼝,例如Repository,CrudRepositoty,PagingAnd
SortingRepository 以及JpaRepository 接⼝。其中Repository为基类,JpaRepository继承⾃PagingAndSortingRepository接⼝,两个泛型参数分别代表Java POJO类以及主键数据类型。我们创建⾃⼰的数据库操作接⼝时,只需继承上述JPA提供的某个接⼝,即可⾃动继承相关数据操作⽅法,⽽不需要再次实现。例如CrudRepositoty提供了对增删改查操作的实现,PagingAndSortingRepository提供了分页查询⽅法的实现。另外JPA提供了⼀套命名规则例如readBy**()等,这些⽅法也只需要⽤户申明⽽由JPA⾃动实现了。如果这仍不能满⾜业务需求,也可以⾃定义SQL查询语句,例如上述代码所⽰,采⽤@Query标签,其中:*语法为引⽤下⾯⽤@Param标识的变量,需要注意的是其中User 不是表⾯⽽是Java POJO类名。具体使⽤参考JPA使⽤⼿册。
(12)设计Service层业务代码
新建UserService类,其源代码如下:
/**
* Created by Song on 2017/2/15.
* User业务逻辑
*/
@Service
public class UserService {
@Autowired
private UserRepositoty userRepositoty;
public User findUserByName(String name){
User user = null;
try{
user = userRepositoty.findByUserName(name);
}catch (Exception e){}
return user;
}
}
(13)设计Controller层
新建UserController.java,提供两个接⼝,/user/index 返回页⾯,/user/show返回数据。其源代码如下:
/**
* Created by Song on 2017/2/15.
* User控制层
*/
@Controller
@RequestMapping(value = "/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping(value = "/index")
public String index(){
return "user/index";
}
@RequestMapping(value = "/show")
@ResponseBody
public String show(@RequestParam(value = "name")String name){
User user = userService.findUserByName(name);
if(null != user)
Id()+"/"+Name()+"/"+Password();
else return "null";
}
}
(14)在application.properties⽂件中配置页⾯引擎。这⾥采⽤SpringMVC(SpringBoot还提供thymeleaf,freemaker等)。这⾥需要配置其静态资源(js、css⽂件、图⽚⽂件等)路径,以及html页⾯⽂件路径,参考SpringMVC在Spring下的配置。
#视图层控制
spring.mvc.view.prefix=classpath:/templates/
spring.mvc.view.suffix=.html
spring.mvc.static-path-pattern=/static/**
(15)在resource⽬录下新建templates以及static⽬录,分别⽤于存放html⽂件以及(js、css⽂件、图⽚)⽂件。在(13)中返回了⼀个“user/index”页⾯,所以在templates下新建user⽬录,在user⽬录
下新建index.html页⾯,这⾥就不写什么了,默认页⾯,通过相对路径引⼊js⽂件,js⽂件⾥只做⽰意,弹出⼀个alert()。
user/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<script src="../static/scripts/jquery.min.js"></script>
<script src="../static/scripts/test.js"></script>
<title>Title</title>
</head>
<h1>TEST PAGE</h1>
<body>
</body>
</html>
static/scripts/test.js
$(document).ready(function (){
alert("OK TEST");
});
(16)配置JPA
新建⼀个configuration包,⽤于存放项⽬配置类。类似SSM架构下,spring需要配置Java POJO类包路径以及DAO层接⼝路径,以⾃动扫描相关注解,这⾥同样需要配置这两项,不同的是Spring采取的是xml配置⽅式,这⾥⽤Java代码+注解⽅式配置。新建⼀个JpaConfiguration.java类,其代码如下:
/**
* Created by Song on 2017/2/15.
* JPA 配置类
*/
@Order(Ordered.HIGHEST_PRECEDENCE)
@Configuration
@EnableTransactionManagement(proxyTargetClass = true)
@EnableJpaRepositories(basePackages = "pository")
@EntityScan(basePackages = "ity")
public class JpaConfiguration {
@Bean
PersistenceExceptionTranslationPostProcessor persistenceExceptionTranslationPostProcessor(){
return new PersistenceExceptionTranslationPostProcessor();
}
}
(17)配置项⽬启动⼊⼝
到这⼀步就可以删掉(5)中官⽅⽰例给出的SampleController.java了,由于我们的⼯程结构已经发⽣了改变,我们需要告诉SpringBoot框架去扫描哪些包从⽽加载对应类,所以这⾥重新编写main函数。新建⼀个Entry.java类,其代码如下(其中@SpringBootApplication是⼀个复合注解,就理解为⾃动配置吧):
/**
* Created by Song on 2017/2/15.
* 项⽬启动⼊⼝,配置包根路径
*/
@SpringBootApplication
@ComponentScan(basePackages = "com.song")
springmvc的注解有哪些public class Entry {
public static void main(String[] args) throws Exception {
SpringApplication.run(Entry.class, args);
}
}
到此这篇关于IDEA搭建SpringBoot离线⼯程的⽅法的⽂章就介绍到这了,更多相关IDEA搭建SpringBoot离线⼯程内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论