Spring boot - zhongjiajie/zhongjiajie.github.com GitHub Wiki
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 bootapplication.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;
}
- 什么是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
- A JavaBean is just a standard