SpringBoot(复习总结)(基础核心步骤)

Spring Boot称为搭建程序的脚手架。其最主要作用就是帮我们快速的构建庞大的spring项目,并且尽可能的减少一切xml配置,做到开箱即用,迅速上手,让我们关注于业务而非配置。我们可以使用SpringBoot创建java应用,并使用java –jar 启动它,就能得到一个生产级别的web工程

为什么要学习SpringBoot

java一直被人诟病的一点就是臃肿、麻烦。当我们还在辛苦的搭建项目时,可能Python程序员已经把功能写好了,究其原因主要是两点:

  • 复杂的配置

    项目各种配置其实是开发时的损耗, 因为在思考 Spring 特性配置和解决业务问题之间需要进行思维切换,所以写配置挤占了写应用程序逻辑的时间。

  • 混乱的依赖管理

    项目的依赖管理也是件吃力不讨好的事情。决定项目里要用哪些库就已经够让人头痛的了,你还要知道这些库的哪个版本和其他库不会有冲突,这也是件棘手的问题。并且,依赖管理也是一种损耗,添加依赖不是写应用程序代码。一旦选错了依赖的版本,随之而来的不兼容问题毫无疑问会是生产力杀手。

SpringBoot的特点

  • 创建独立的spring应用程序

  • 直接内嵌tomcatjettyundertow(不需要打包成war包部署)

  • 提供了固定化的“starter”配置,以简化构建配置

  • 尽可能的自动配置spring和第三方库

  • 提供产品级的功能,如:安全指标、运行状况监测和外部化配置等

  • 绝对不会生成代码,并且不需要XML配置

Springboot一般开发步骤:

1.创建工程,在pom.xml中引入依赖

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

    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            com.github.drtrang
            druid-spring-boot2-starter
            1.1.10
        
        
        
            org.springframework.boot
            spring-boot-starter-jdbc
        
        
        
            mysql
            mysql-connector-java
        
        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            1.3.2
        
        
        
            tk.mybatis
            mapper-spring-boot-starter
            1.1.7
        
        
            org.mybatis
            mybatis
            3.5.4
        
        
            org.springframework.boot
            spring-boot-starter-thymeleaf
        
    

2.添加全局配置文件:application.properties

server.port=8888

#logging.level.org.springframework=debug

# 连接四大参数
spring.datasource.url=jdbc:mysql://localhost:3306/heima
spring.datasource.username=root
spring.datasource.password=root
# 可省略,SpringBoot自动推断
#spring.datasource.driverClassName=com.mysql.jdbc.Driver


# mybatis 别名扫描
mybatis.type-aliases-package=cn.itcast.pojo
# mapper.xml文件位置,如果没有映射文件,请注释掉
#mybatis.mapper-locations=classpath:mappers/*.xml

3.添加引导类

@SpringBootApplication //自动配置+组件扫描+SpringBootConfiguration
//@EnableAutoConfiguration 自动配置
//@ComponentScan 组件扫描
//@SpringBootConfiguration 声明当前类是SpringBoot应用的配置类
public class UserApplication {

    public static void main(String[] args) {
        SpringApplication.run(UserApplication.class,args);
    }
}
  • @Configuration:声明一个类作为配置类,代替xml文件

  • @Bean:声明在方法上,将方法的返回值加入Bean容器,代替标签

  • @Value:属性注入

  • @PropertySource:指定外部属性文件。

4.编写Controller

@Controller
@RequestMapping("user")
public class UserController {

    private UserService userService;

    @GetMapping("{id}")
    @ResponseBody
    public User queryById(@PathVariable("id")Long id){
        return this.userService.queryUserById(id);

    }

    @GetMapping("all")
    public String toUsers(Model model){
        List users = this.userService.queryUserAll();
        model.addAttribute("users",users);
        return "users";
    }

    @GetMapping("test")
    @ResponseBody
    public String test(){
        return "hello user!";
    }
}

5.添加拦截器,定义配置类,注册拦截器

//拦截器
@Component
public class MyInterceptor implements HandlerInterceptor{
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("前置方法正在执行");
        return true;
    }

    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("后置方法正在执行");
    }

    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("完成方法正在执行");
    }
}

@Configuration
public class WebMvcConfiguration implements WebMvcConfigurer{

    @Autowired
    private MyInterceptor myInterceptor;

    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(myInterceptor).addPathPatterns("/**");
    }
}

6.编写service

@Service
public class UserService {

    @Autowired
    public UserMapper userMapper;

    public User queryUserById(Long id){
        return this.userMapper.selectByPrimaryKey(id);
    }

    @Transactional
    public void deleteUserById(Long id){
        this.userMapper.deleteByPrimaryKey(id);
    }

    public List queryUserAll() {
        return this.userMapper.selectAll();
    }
}

其实,我们引入jdbc或者web的启动器,就已经引入事务相关的依赖及默认配置了 ,至于事务,SpringBoot中通过注解来控制。就是我们熟知的@Transactional

 7.引入通用mapper



    tk.mybatis
    mapper-spring-boot-starter
    2.0.2
@Mapper
public interface UserMapper extends tk.mybatis.mapper.common.Mapper{

}

8.启动引导类,测试项目

 

 

你可能感兴趣的:(java,spring,spring,boot)