什么是Spring Boot?
Spring框架非常优秀,然而它最大的问题在于“配置过多”。基于Spring的企业级开发项目,需要大量的配置文件,SpringBoot的出现就是为了,解决Spring框架存在的问题。
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的创建、运行、调试、部署等。使用SpringBoot可以做到专注于Spring应用的开发,而无需过多关注XML的配置。SpringBoot使用“约定优于配置”的理念,简单来说,SpringBoot提佛那个了针对企业应用开发各种场景的很多spring-boot-starter自动配置依赖模块,这些模块都基于“开箱即用”的原则,使得企业应用开发中各种长江的Spring应用更加快速和高效。
**
SpringBoot优缺点?
**
优点:
独立运行
Spring Boot而且内嵌了各种servlet容器,Tomcat、Jetty等,现在不再需要打成war包部署到容器中,Spring Boot只要打成一个可执行的jar包就能独立运行,所有的依赖包都在一个jar包内。
简化配置
spring-boot-starter-web启动器自动依赖其他组件,简少了maven的配置。
自动配置
Spring Boot能根据当前类路径下的类、jar包来自动配置bean,如添加一个spring-boot-starter-web启动器就能拥有web的功能,无需其他配置。
无代码生成和XML配置
Spring Boot配置过程中无代码生成,也无需XML配置文件就能完成所有配置工作,这一切都是借助于条件注解完成的,这也是Spring4.x的核心功能之一。
应用监控
Spring Boot提供一系列端点可以监控服务及应用,做健康检测。
缺点:
1.从原来的xml配置方式转换到JAVA配置方式变化有点大,不太适应
2.感觉Spring Boot 比较适合做微服务,不适合做比较大型的项目。
Spring Boot虽然上手很容易,但如果你不了解其核心技术及流程,所以一旦遇到问题就很棘手,而且现在的解决方案也不是很多,需要一个完善的过程。
SpringBoot注解
1.@SpringBootApplication
springboot的核心注解,用来开启Springboot的各项功能相当于@Configuration+@ComponentScan+EnableAutoConfiguration
2.@MapperScan(basePackages=“mapper类所在的包”)
指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类
3.@ComponentScan
指明需要扫描的包默认扫描所在包及子包
4.@ExceptionHandler 表示异常拦截
5.@ControllerAdvice
controller 的一个辅助类,最常用的就是作为全局异常处理的切面类可以指定扫描范围,约定了几种可行的返回值,如果是直接返回 model 类的话,需要使用@ResponseBody 进行 json 转换
6.@Value
用来获取自定义的属性值
7.@ConfigurationProperties(prefix=“前缀”)
作用在类上,用来获取拥有该前缀的自定义的属性
8.@PropertySource(“classpath:xxx.properties”)
作用在类上,项目启动加载该配置文件
9.@Configuration
声明当前类是一个配置类,相当于Spring配置的xml文件
10.@EnableTransactionManagement
开启事务的注解配置
11.@RestController
相当于@Controller+@ResponseBody
SSM常用注解:
@Controller 作用于controller层,将其声明为spring的Bean
@Service : 在业务逻辑层(service层)使用
@Repository : 在数据访问层(dao层)使用.
@Component : 组件,没有明确的角色
@Autowired 自动装配 spring的注解
@Resource 自动注入 是j2ee的,但是spring支持
@RequestMapping 作用于方法或类上,设置访问的url
@ResponseBody 返回json数据
@RequestBody 接收前台的json数据
@PathVariable 接收路径参数如:/order/update/1
@RequestParam 接收路径中问好后的参数如:/order/update?id=1
@RunWith(SpringJUnit4ClassRunner.class) 单元测试
@ContextConfiguration 加载spring的配置文件
@Transactional 事务注解