Spring boot - zhongjiajie/zhongjiajie.github.com GitHub Wiki

Spring Boot

Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架.Spring 一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架

Spring 是教科书级别的经典的东西.但是略显臃肿,顺应MicroServices的潮流,SpringBoot 应运而生.用来构建基于Spring框架的标准化的独立部署应用程序.Spring Boot的目的是提供一组工具,以便快速构建容易配置的 Spring 应用程序.Spring Boot的主要优点:

  • 为所有Spring开发者更快的入门
  • 开箱即用,提供各种默认配置来简化项目配置
  • 内嵌式容器简化Web项目
  • 没有冗余代码生成和XML配置的要求

Spring Boot 使您能轻松地创建独立的、生产级的、基于 Spring 且能直接运行的应用程序.我们对 Spring 平台和第三方库有自己的看法,所以您从一开始只会遇到极少的麻烦.

几个主要的注解

  • @SpringBootApplication: Sprnig Boot项目的核心注解,主要目的是开启自动配置.其实是结合了三个注解 @Configuration, @EnableAutoConfiguration@ComponentScan

    • @Configuration: 相当于传统的xml配置文件,如果有些第三方库需要用到xml文件,建议仍然通过@Configuration类作为项目的配置主类,可以使用@ImportResource注解加载xml配置文件.
    • @EnableAutoConfiguration: Spring Boot自动配置(auto-configuration).尝试根据你添加的jar依赖自动配置你的Spring应用.例如,如果你的classpath下存在HSQLDB,并且你没有手动配置任何数据库连接beans,那么我们将自动配置一个内存型(in-memory)数据库.你可以将@EnableAutoConfiguration或者@SpringBootApplication注解添加到一个@Configuration类上来选择自动配置.如果发现应用了你不想要的特定自动配置类,你可以使@EnableAutoConfiguration注解的排除属性来禁用它们
    • @ComponentScan: 表示将该类自动发现(扫描)并注册为Bean,可以自动收集所有的Spring组件,包括@Configuration类.我们经常使用@ComponentScan注解搜索beans,并结合@Autowired注解导入.
  • @RestController: 等价于@Controller+@ResponseBody的结合,使用这个注解的类里面的方法都以json格式输出.

    • @Controller: 用于定义控制器类,在spring项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层)
    • @ResponseBody: 用该注解修饰的函数,会将结果直接填充到HTTP的响应体中,一般用于构建RESTful的api
  • @RequestMapping: 配置url映射提供路由信息,负责URL到Controller中的具体函数的映射

  • @Import: 用来导入其他配置类

  • @ImportResource: 用来加载xml配置文件

  • @Bean: 用@Bean标注方法等价于xml配置的bean

  • @Autowired: 自动导入依赖的bean.主要是自动实例化spring boot的对象,写成public Class object;完成类似public Class object = new Class()的功能

  • @Service: 一般用于修饰service层的组件

  • @Repository: 使用@Repository注解可以确保DAO或者repositories提供异常转译,这个注解修饰的DAO或者repositories类会被ComponetScan

  • @Value: 注入spring boot application.properties配置文件的属性值,实例代码:@Value(value = “#{message}”); private String message

  • @Mapper:

  • @Param: 传值给后面需要的参数实现的功能,例如mybatis中需要传值的sql语句

  • @Transactional: 事务注释

  • @RequestParam: 用于controller接收前端传进来的参数,进行查询条件或者翻页信息的传递.包含key=value这样的写法在请求url中

  • @RequestBody: 用于controller接收前端传进来的参数,进行查询条件或者翻页信息的传递.需要把所有请求参数作为json解析,因此,不能包含key=value这样的写法在请求url中,所有的请求参数都是一个json.一般post方法用@RequestBody

  • @PathVariable: 获取前端传进来的url的路径信息@RequestMapping("/app/detail/{appId}");@PathVariable("appId")

  • @RequestMethod: 请求的方法 GET POST PUT

  • @ModelAttribute: 将前端传进来的参数封装成一个java的对象

  • @Bean: 把方法放到spring boot容器中进行管理.是一个方法级别的注解.注解上支持设置init-method,destroy-method,autowiring和name Spring Bean基本概念

    static Map<Long, User> users = Collections.synchronizedMap(new HashMap<Long, User>());
    
    @RequestMapping(value="/", method=RequestMethod.POST)
    // 将前端传进来的值封装成一个java的对象user,然后就可以调用对象的方法和属性
    public String postUser(@ModelAttribute User user) {
        users.put(user.getId(), user);
        return "success";
    }
  • @PathVariable: 获取在Rest中传入的变量

    @RequestMapping("/users/{username}")
    // 此时 @PathVariable String username 可以获得从 @RequestMapping("/users/{username}") 传进来的 `username`的值
    public String userProfile(@PathVariable String username){
        return "user" + username;
    }

当配置好了application.properties文件的内容之后spring boot会自动加载其中的配置信息,如使用Mybaits配置了数据源sqlSessionFactory会自动注入到Mapper中,所要做的就是在启动类中添加对mapper包扫描@MapperScan就可以了.spring boot(六)-如何优雅的使用mybatis

  • spring bean 对象的get/set方法
import lombok.Data;
// 通过 Data 注释可以实现对私有成员的自动 set/get 方法
@Data
public class Result {

    private Integer returnCode;

    private String returnMsg;

    private Object data;
}

java bean

  • 什么是JavaBeanWhat is a JavaBean exactly
    • A JavaBean is just a standard
      • All properties private (use getters/setters)
      • A public no-argument constructor
      • Implements Serializable It's just a convention. Lots of libraries depend on it though.With respect to Serializable, from the API documentation

相关资料


⚠️ **GitHub.com Fallback** ⚠️