SpringBoot快速掌握(参照官方文档)

一、Spring-Boot
概念:Spring Boot并不是一个框架,从根本上将,它就是一些库的集合,继承starter,约定大于配置,它早已集成了需要配置的众多信息;
作用:简化spring配置,让spring配置、监控、部署变简单,spring-boot无需在意jar版本问题
下面是Spring Boot在 org.springframework.boot 组下提供的一些Starters:

二、spring-boot 特点
1)内置tomcat(无需部署)
SpringBoot快速掌握(参照官方文档)_第1张图片
官方文档:https://spring.io/projects/spring-boot#learn
选择一个版本进行使用,我使用的是1.5.17
快速开始一个Maven项目
SpringBoot快速掌握(参照官方文档)_第2张图片
Maven项目使用spring-boot相关依赖


    4.0.0

    com.example
    myproject
    0.0.1-SNAPSHOT

    
    
        org.springframework.boot
        spring-boot-starter-parent
        1.5.17.RELEASE
    

        
        
            org.springframework.boot
            spring-boot-starter-web
        
    

    
    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

创建一个Maven父项目,一个子Maven项目
上面核心依赖包配置到父pom.xml,以后子项目都有了父类的依赖
子类springboot-hello的pom.xml依赖
springboot的启动测试
在这里插入图片描述

 package com.yyg;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer;
    import org.springframework.web.bind.annotation.RestController;
    //扫描有@RestController注解的类
    @SpringBootApplication//(scanBasePackages="com.yyg") // same as @Configuration @EnableAutoConfiguration @ComponentScan
    public class RunApp{
    	public static void main(String[] args) {
            SpringApplication.run(RunApp.class, args);
        }
    }

SpringBoot快速掌握(参照官方文档)_第3张图片
使用spring-boot访问页面
Controller

package com.yyg.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController //支持移动端的页面访问数据
public class HelloController {
	//获取属性值:默认properties 默认没有取yml
	@Value("${Integer.age}")
	Integer age;
	 @RequestMapping("/")
	    String home() {
	        return "Hello Wodasdaddwarld662dawd!"+age;
	    }
}

SpringBoot快速掌握(参照官方文档)_第4张图片
2)热部署(无需重启tomcat)
SpringBoot快速掌握(参照官方文档)_第5张图片
父类pom.xml加入热部署依赖包

    
        org.springframework.boot
        spring-boot-devtools
        true
	 

SpringBoot快速掌握(参照官方文档)_第6张图片
修改代码时,控制台自动重启
3)自定义启动界面
SpringBoot快速掌握(参照官方文档)_第7张图片
在resource下配置banner.txt即可,内容自定义
SpringBoot快速掌握(参照官方文档)_第8张图片在这里插入图片描述
4)spring-boot属性文件(替代了xml文件)
SpringBoot快速掌握(参照官方文档)_第9张图片
Application.yml 层级关系

environments:   
    dev:      
  	url: http://dev.bar.com     
   	name: Developer Setup   
    prod:     
    	 url: http://foo.bar.com   
         name: My Cool App

Application.properties

environments.dev.url=http://dev.bar.com
environments.dev.name=Developer Setupenvironments.prod.url=http://foo.bar.com
environments.prod.name=My Cool App

两个文件同时存在以application.properties为准,它没有,yml有的话就以yml为准
获取配置文件属性
SpringBoot快速掌握(参照官方文档)_第10张图片
Controller
在这里插入图片描述

@RestController //支持移动端的页面访问数据
public class HelloController {
	//获取属性值:默认properties 默认没有取yml
	@Value("${Integer.age}")
	Integer age;
	 @RequestMapping("/")
	    String home() {
	        return "Hello Wodasdqaddwarld6wd62dawd!"+age;
	    }
}

5)spring-boot返回json
创建一个Maven项目
需要jsp依赖包才能编译


	
		org.apache.tomcat.embed
		tomcat-embed-jasper
		provided
	

Controller

@Controller
public class IndexContrller {
//跳转index.jsp页面
	@RequestMapping("/")
	String home(HttpServletRequest request) {
		request.setAttribute("age", 116);
		return "index";
	}
	//返回json
@RequestMapping("/json")
@ResponseBody
Object getJson() {
	Map map=new HashMap<>();
	map.put("name","阳");
	return map;
}

}
启动spring-boot

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
public class RunApp{
	public static void main(String[] args) {
        SpringApplication.run(RunApp.class, args);
    }
}

三、Maven项目的打包
父类Maven项目的pom.xml植入打包依赖


	
		
			org.springframework.boot
			spring-boot-maven-plugin
		
	

点击需要打包的项目右键–>Run as
SpringBoot快速掌握(参照官方文档)_第11张图片
四Spring-boot持久化 (准备数据库和测试表)
1)持久化JDBC
创建jdbc的Maven项目
配置文件application.yml

spring:
     mvc:
     view: 
      prefix: /WEB-INF/jsp/
      suffix: .jsp
  datasource:
    driverClassName: com.mysql.jdbc.Driver
    url : jdbc:mysql://localhost:3306/spring-boot-demo?useUnicode=true&characterEncoding=utf-8 
    username : root
    password : 000000

Jdbc的maven项目pom.xml


	4.0.0
	
		springboot-parent
		springboot-parent
		0.0.1-SNAPSHOT
	
	springboot-jdbc
	
	
		
			org.springframework.boot
			spring-boot-starter-jdbc
		
		
	

在父类Maven spring-parent导入jdbc依赖


	
		mysql
		mysql-connector-java
	
	
	
		org.springframework.boot
		spring-boot-starter-test
	

启动spring-boot

@SpringBootApplication
public class RunApp{
	public static void main(String[] args) {
        SpringApplication.run(RunApp.class, args);
    }
}
Dao层和实现层

public interface UserDao {
void insert(User user);
List selectAll();
}
@Service
public class UserDaoImpl implements UserDao{

@Autowired
JdbcTemplate jdbcTemplate;
//jdbc 新增实现
@Override
public void insert(User user) {
	jdbcTemplate.update("insert into t_user(name,age) value(?,?)",user.getName(),user.getAge());
}
//jdbc 查询全部实现
@Override
public List selectAll() {
	String sql = "select *from t_user";
	RowMapper rowMapper = new BeanPropertyRowMapper(User.class);
	return jdbcTemplate.query(sql, rowMapper);
}

}

测试

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes=RunApp.class)
public class JdbcTest {
	//Springboot 测试
	@Autowired
	UserDao userDao;
	//查询全部
	@Test
	public void testQuery() throws Exception {
		List selectAll = userDao.selectAll();
		System.out.println(selectAll.size());
	}
	//新增
	@Test
	public void testAdd() throws Exception {
		try {
			User user=new User();
			user.setName("yyg");
			user.setAge(18);
			userDao.insert(user);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

2)持久化SpringDATAJPA
创建jpa的Maven项目
在pom.xml植入连接依赖


	4.0.0
	
		springboot-parent
		springboot-parent
		0.0.1-SNAPSHOT
	
	springboot-dataJpa
	
	
		
			org.springframework.boot
			spring-boot-starter-data-jpa
		
	

创建仓库类继承JpaRepository(底层封装了crud和分页排序功能)

import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository{
}

服务层 调用

@Service
@Transactional
public class UserServiceImpl {
	@Autowired
	private UserRepository userRepository;
	//根据id查询
	public User get(Integer id){
		return userRepository.getOne(id);
	}
	//查询全部
	public List getAll(){
		return userRepository.findAll();
	}
	//新增
	public User save(User user){
		return userRepository.save(user);
	}
	//修改
	public User update(User user) {
		return userRepository.save(user);
	}
	//删除
	public void delete(Integer id){
		userRepository.delete(id);
	}
}

测试

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes=RunApp.class)
public class JPATest {
	@Autowired
	UserServiceImpl userServiceImpl;
	//查询全部
	@Test
	public void testQuery() throws Exception {
			List all = userServiceImpl.getAll();
			System.out.println(all.size());
	}
	//删除
	@Test
	public void testDelete() throws Exception {
			userServiceImpl.delete(1);
			List all = userServiceImpl.getAll();
			System.out.println(all.size());
	}
}

启动spring-boot

package com.yyg;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer;
import org.springframework.web.bind.annotation.RestController;
//扫描有@RestController注解的类
@SpringBootApplication //等于(scanBasePackages="com.yyg") same as @Configuration @EnableAutoConfiguration @ComponentScan
public class RunApp{
	public static void main(String[] args) {
        SpringApplication.run(RunApp.class, args);
    }
}

3)持久化Mybatis
创建mybatis的Maven项目
在pom.xml植入mybatis的依赖包


	4.0.0
	
		springboot-parent
		springboot-parent
		0.0.1-SNAPSHOT
	
	springboot-mybatis
	
		
		
			org.mybatis.spring.boot
			mybatis-spring-boot-starter
			1.3.0
		

		
		
			com.github.pagehelper
			pagehelper-spring-boot-starter
			1.2.2
		
		
		
		
			org.kd
			mybatis-tool-box
			1.0-M9
		
	

Domain层

public class User {
	private Integer id;
	private String name;
	private Integer age;
//getter/setter略
}

接口映射层
SpringBoot快速掌握(参照官方文档)_第12张图片
UserMapper.java

//@Mapper
public interface UserMapper {
	// 查询所有
	//@Select("select * from t_user")
	public List getAll();
	public void save(User user);
	@Select("select *from t_user where name like '%${name}%' ")
	public void selectLike(User user);
}

UserMapper.xml




  
  
  	insert into t_user(name,age) value(#{name},#{age});
  

服务层IUserService

public interface IUserService {
	public List getAll();
	public void save(User user);
	//分页
	public PageInfo pageList(Integer pageRow,Integer pageSize);
}

实现UserServiceImpl

@Service
public class UserServiceImpl implements IUserService{
	@Autowired
	UserMapper userMapper;
	@Override
	public List getAll() {
		// TODO Auto-generated method stub
		return userMapper.getAll();
	}
	@Override
	public void save(User user) {
		userMapper.save(user);
	}
	@Override
	public PageInfo pageList(Integer pageRow, Integer pageSize) {
		
		// TODO Auto-generated method stub
		PageHelper.startPage(pageRow, pageSize);
		List all = userMapper.getAll();
		return new PageInfo<>(all);
	}
}

Application.yml配置扫描xml

  spring:
      mvc:
        view: 
          prefix: /WEB-INF/jsp/
          suffix: .jsp
      datasource:
        driverClassName: com.mysql.jdbc.Driver
        url : jdbc:mysql://localhost:3306/spring-boot-demo?useUnicode=true&characterEncoding=utf-8 
        username : root
        password : 000000

# Mybatis配置

    mybatis:
      typeAliasesPackage: com.yyg.domain
      mapperLocations: classpath:com/yyg/mapper/mapper_xml/*.xml
    #日志
    logging:
       level: 
       com:
          yyg: DEBUG

测试

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes=RunApp.class)
public class MybatisTest {
	@Autowired 
	IUserService iUserService;
	@Autowired
	UserMapper userMapper;
//查询全部
	@Test
	public void testQueryAll() throws Exception {
		List all = iUserService.getAll();
		System.out.println(all.size());
	}
//新增测试
	@Test
	public void testAdd() throws Exception {
		try {
			User user=new User();
			user.setAge(55);
			user.setName("alibb");
			iUserService.save(user);
			List all = iUserService.getAll();
			System.out.println(all.size());
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
//模糊查询
	@Test
	public void testSelectLike() throws Exception {
		try {
			User user=new User();
			user.setName("yyg");
			userMapper.selectLike(user);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	//分页查询
	@Test
	public void pageTest() throws Exception {
		PageInfo pageList = iUserService.pageList(1, 2);
		for (User user : pageList.getList()) {
			System.out.println(user.toString());
		}
	}
}

启动spring-boot

@SpringBootApplication //scanBasePackages=("com.yyg")
//这里和以往不一样的地方就是MapperScan的注解,这个是会扫描该包下的接口
@MapperScan("com.yyg.mapper")
public class RunApp{
	public static void main(String[] args) {
        SpringApplication.run(RunApp.class, args);
    }
}

五、日志信息的配置
Application.yml

logging.level.*= # Log levels severity mapping. For instance `logging.level.org.springframework=DEBUG`

六、事务控制
在父Maven项目的pom.xml添加依赖


	org.springframework.boot
	spring-boot-starter-test

测试

//Spring测试环境
@RunWith(SpringJUnit4ClassRunner.class)
//SpringBoot测试,并指定启动类
@SpringBootTest(classes = App.class)
public class UserServiceTest {
	
	@Autowired
	private UserService userService;
	
	@Test
	public void testGet() throws Exception {
		User user = userService.get(1L);
		System.out.println(user.getName());
	}
}

有疑问的欢迎联系2822256710,加v :yygtq0818126,欢迎点评

你可能感兴趣的:(SpringBoot快速掌握(参照官方文档))