springboot.docx
《springboot.docx》由会员分享,可在线阅读,更多相关《springboot.docx(30页珍藏版)》请在冰豆网上搜索。
springboot
SpringBoot知识点大纲
●Spring发展史
●SpringBoot简介
●SpringBoot环境搭建
●SpringBoot整合mybatis
●SpringBoot开发
●SpringBoot整合redis
Spring发展史
Spring1.x时代
在Spring1.x时代,都是通过xml文件配置bean,随着项目的不断扩大,需要将xml配置分放到不同的配置文件中,需要频繁的在java类和xml配置文件中切换。
Spring2.x时代
随着JDK1.5带来的注解支持,Spring2.x可以使用注解对Bean进行声明和注入,大大的减少了xml配置文件,同时也大大简化了项目的开发。
那么,问题来了,究竟是应该使用xml还是注解呢?
最佳实践:
1、应用的基本配置用xml,比如:
数据源、资源文件db.properties等;
2、业务开发用注解,比如:
Service中注入bean等;
Spring3.x到Spring4.x
从Spring3.x开始提供了Java配置方式,使用Java配置方式可以更好的理解你配置的Bean,现在我们就处于这个时代,并且Spring4.x和Springboot都推荐使用java配置的方式。
Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置。
@Configuration和@Bean和@ComponentScan
Spring的Java配置方式是通过@Configuration和@Bean@ComponentScan这两个注解实现的:
1、@Configuration作用于类上,相当于一个xml配置文件;
2、@Bean作用于方法上,相当于xml配置中的标签;
3、@ComponentScan作用于类上,扫描包;
创建Maven项目添加依赖
org.springframework
spring-webmvc
4.1.6.RELEASE
--连接池-->
com.alibaba
druid
1.0.14
${project.artifactId}
--资源文件拷贝插件-->
org.apache.maven.plugins
maven-resources-plugin
UTF-8
--java编译插件-->
org.apache.maven.plugins
maven-compiler-plugin
1.7
UTF-8
--配置Tomcat插件-->
org.apache.tomcat.maven
tomcat7-maven-plugin
2.2
定义一个实体类
packagecom.bjsxt.springboot.javaconfig;
publicclassUser{
privateStringusername;
privateStringpassword;
privateIntegerage;
publicStringgetUsername(){
returnusername;
}
publicvoidsetUsername(Stringusername){
this.username=username;
}
publicStringgetPassword(){
returnpassword;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}
publicIntegergetAge(){
returnage;
}
publicvoidsetAge(Integerage){
this.age=age;
}
publicUser(Stringusername,Stringpassword,Integerage){
super();
this.username=username;
this.password=password;
this.age=age;
}
publicUser(){
super();
//TODOAuto-generatedconstructorstub
}
}
定义一个类UserDao,在类中添加一个方法.
packagecom.bjsxt.springboot.javaconfig;
importjava.util.ArrayList;
importjava.util.List;
/**
*@ClassName:
UserDao
*@Description:
*@Company:
北京尚学堂科技有限公司
*@authormengqx
*@date2017年9月14日
*/
publicclassUserDao{
publicListqueryUserList(){
Listresult=newArrayList();
//模拟数据库的查询
result.add(newUser("admin","123",12));
result.add(newUser("马蓉","不离婚",38));
result.add(newUser("宋哲","被抓了",28));
returnresult;
}
}
定义一个类UserService,调用UserDao类中的方法.
packagecom.bjsxt.springboot.javaconfig;
importjava.util.List;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.stereotype.Service;
/**
*@ClassName:
UserService
*@Description:
*@Company:
北京尚学堂科技有限公司
*@authormengqx
*@date2017年9月14日
*/
@Service
publicclassUserService{
@Autowired//注入Spring容器中的bean对象
privateUserDaouserDAO;
publicListqueryUserList(){
//调用userDAO中的方法进行查询
returnthis.userDAO.queryUserList();
}
}
编写添加配置文件类
packagecom.bjsxt.springboot.javaconfig;
importorg.springframework.context.annotation.Bean;
importorg.springframework.context.annotation.ComponentScan;
importorg.springframework.context.annotation.Configuration;
/**
*@ClassName:
SpringConfig
*@Description:
*@Company:
北京尚学堂科技有限公司
*@authormengqx
*@date2017年9月14日
*/
@Configuration
@ComponentScan(basePackages="com.bjsxt.springboot.javaconfig")
publicclassSpringConfig{
@Bean//通过该注解来表明是一个Bean对象,相当于xml中的
publicUserDaogetUserDAO(){
returnnewUserDao();//直接new对象做演示
}
}
测试:
packagecom.bjsxt.springboot.javaconfig;
importjava.util.List;
importorg.springframework.context.annotation.AnnotationConfigApplicationContext;
/**
*@ClassName:
Main
*@Description:
*@Company:
北京尚学堂科技有限公司
*@authormengqx
*@date2017年9月14日
*/
publicclassMain{
publicstaticvoidmain(String[]args){
//通过Java配置来实例化Spring容器
AnnotationConfigApplicationContextcontext=newAnnotationConfigApplicationContext(SpringConfig.class);
//在Spring容器中获取Bean对象
UserServiceuserService=context.getBean(UserService.class);
//调用对象中的方法
Listlist=userService.queryUserList();
for(Useruser:
list){
System.out.println(user.getUsername()+","+user.getPassword()+","+user.getPassword());
}
//销毁该容器
context.destroy();
}
}
SpringBoot简介
什么是SpringBoot
SpringBoot的优缺点
官网:
http:
//projects.spring.io/spring-boot/
SpringBoot环境搭建
创建maven项目
导入springboot依赖
//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.0http:
//maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
com.bjsxt
springdeom
0.0.1-SNAPSHOT
--导入springboot相关依赖-->
org.springframework.boot
spring-boot-starter-parent
1.5.7.RELEASE
--springboot支持mvcaop-->
org.springframework.boot
spring-boot-starter-web
创建springboot主程序入口
Springboot主程序类,必须在包的顶层。
packagecom.bjsxt;
importorg.springframework.boot.SpringApplication;
importorg.springframework.boot.autoconfigure.SpringBootApplication;
importorg.springframework.web.bind.annotation.RequestMapping;
/**
*@ClassName:
SpringBootDemo
*@Description:
*@Company:
北京尚学堂科技有限公司
*@authormengqx
*@date2017年9月7日
*/
@SpringBootApplication
publicclassSpringBootDemo{
publicstaticvoidmain(String[]args){
//启动springboot应用程序同时,同时启动tomcat。
SpringApplication.run(SpringBootDemo.class,args);
}
}
创建一个controller
返回基本数据类型:
//@RestController即可用代理restful风格,同时也有Controller功能,还有@ResponseBody的功能
@RestController
publicclassUserController{
@RequestMapping("index")
publicStringindex(){
return"helloStringboot";
}
}
返回实体类对象
@RequestMapping("getUser")
publicUsergetUser(){
returnnewUser(1,"admin","123");
}
返回list集合对象,同时也可以返回一个map集合
@RequestMapping("lists")
publicListfindAll(){
Listlist=newArrayList<>();
list.add(newUser(1,"0张三丰","123"));
list.add(newUser(2,"1张三丰","123"));
list.add(newUser(3,"2张三丰","123"));
list.add(newUser(4,"3张三丰","123"));
returnlist;
}
SpringBoot+mybatis
创建目录结构
添加mybatis的依赖
--springboot+mybatis-->
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.1.1
--数据库驱动-->
mysql
mysql-connector-java
5.1.39
创建mapper,service,controller
publicinterfaceUserMapper{
ListfindAll();
}
publicinterfaceUserService{
ListfindAll();
}
@Service
publicclassUserServiceImplimplementsUserService{
@Autowired
privateUserMapperuserMapper;
@Override
publicListfindAll(){
returnuserMapper.findAll();
}
}
@RestController
publicclassUserController{
@Autowired
privateUserServiceuserService;
/**
*
*@Description:
整合mybatis的查询所有数据。
*@return
*@authormengqx
*@date2017年9月7日
*/
@RequestMapping("getAll")
publicListgetAll(){
Listlist=userService.findAll();
returnlist;
}
}
创建Mapper的映射文件
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEmapper
PUBLIC"-//mybatis.org//DTDMapper3.0//EN"
"http:
//mybatis.org/dtd/mybatis-3-mapper.dtd">
select*fromt_userorderbyid;
创建数据库连接配置文件application.properties
application.properties是springboot项目的核心配置文件,xxx.yml这种配置文件。
spring.datasource.url=jdbc:
mysql:
//localhost:
3306/mybatis
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#mybaits.type-aliases-package=com.bjsxt.pojo
mybatis.mapper-locations=classpath:
mapper/*Mapper.xml
测试:
新添加一个注解扫描
@MapperScan("com.bjsxt.mapper")
@SpringBootApplication
@MapperScan("com.bjsxt.mapper")
publicclassSpringBootDemo{
publicstaticvoidmain(String[]args){
//启动springboot应用程序同时,同时启动tomcat。
SpringApplication.run(SpringBootDemo.class,args);
}
}
修改数据库连接配置文件application.properties
spring.datasource.url=jdbc:
mysql:
//localhost:
3306/mybatis
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
测试:
@SpringBootApplication
@MapperScan("com.bjsxt.mapper")
publicclassSpringBootDemo{
publicstaticvoidmain(String[]args){
//启动springboot应用程序同时,同时启动tomcat。
SpringApplication.run(SpringBootDemo.class,args);
}
}
Mybatis-注解开发:
不推荐使用
publicinterfaceUserMapper{
@Select("select*fromt_userorderbyid")
ListfindAll();
}
@Mapper和@MapperScan("com.bjsxt.mapper")比较
@Mapper:
放在接口上。
每个接口必须有自己的Mapper注解
@Mappe