什么是spring boot?
Spring Boot是由Pivotal团队提供的全新框架,
其设计目的是用来简化新Spring应用的初始搭建以及开发过程。
该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
spring boot是为了简化spring应用开发的一门技术,它
一般是和我们的项目构建工具maven或者gradle一起使用。
它提供四大特性: 起步依懒、自动配置、运行監控、CLI
准备环境
-
建spring boot项目: STS —> new ----> spring boot starter project
项目结构:
|src/main/java //放Java代码文件 | ---- Application.java ---启动类(main方法) | ---- |src/main/resource //放配置文件,静态资源,模板文件 | ----static 放静态资源 html , css , js | ----templates 放模板文件 freemarker,thymeleaf | ----application.properties 配置文件 src/main/test | | src/main/webapp | ----WEB-INF/jsp 放jsp | pom.xml
编写一个Controller
-
运行项目:java run —> spring boot run —> maven run --> package jar run
-
运行原理分析
-
//@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
//这个注解等价于@Configuration + @ComponentScan + @EnableAutoConfiguration
@Configuration //代表这个是一个配置类
@ComponentScan //开启组件扫描,扫描我的当前包路径
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) //开启自动配置
public class SpringBootCrmApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootCrmApplication.class, args);
//启动一个tomcat,布署了当前项目(localhost:8080/), 自动配置springmvc前端控制器,加载了spring容器,
//并且吧SpringBootCrmApplication.class作为spring的配置文件初始化容器
}
}
SpringApplication.run(SpringBootCrmApplication.class, args);
//1、启动tomcat
//2、布署当前项目
//3、加载spring容器 SpringBootCrmApplication作为配置文件
//4、配置springmvc DispatcherServlet
SpringBootCrmApplication作用
* 作为spring boot的启动类
* 作为spring容器配置文件
@SpringBootApplication注解等价于//这个注解==@Configuration + @ComponentScan + @EnableAutoConfiguration
该注解有三层意思:
1、代表这是一个配置类
2、开启包扫描
3、开启自动配置
添加jsp支持:(CRM页面准备)
添加依懒
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
配置前缀和后缀
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
创建webapp/WEB-INF/jsp 存放jsp
* 拷PO
* 实现案例
* 准备前台页面
* 编写Controller
* 编写Service
* 编写Dao (添加mybatis起步依懒,配置数据库连接信息,配置SqlSessionFactory)
添加mybatis起步依懒
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
配置数据库连接信息
#配置连接信息:application.properties
mybatis.type-aliases-package=com.neo.entity
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=utf-8
spring.datasource.username = root
spring.datasource.password = root
自动配置 Datasource和SqlSessionFactory
编写Mapper
添加MapperScan @MapperScan(“类路径”)
起步依赖和自动配置
一般情况下spring boot项目都是继承自框架,并且提供了一个统一的版本管理
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
自动配置:
@EnableAutoConfiguration 开启自动配置功能
核心注解盘点:
spring 4.0 提供新功能,条件化配置,条件配置
spring.factories文件里每一个xxxAutoConfiguration文件一般都会有下面的条件注解:
@ConditionalOnBean:当容器里有指定Bean的条件下
@ConditionalOnClass:当类路径下有指定类的条件下
@ConditionalOnExpression:基于SpEL表达式作为判断条件
@ConditionalOnJava:基于JV版本作为判断条件
@ConditionalOnJndi:在JNDI存在的条件下差在指定的位置
@ConditionalOnMissingBean:当容器里没有指定Bean的情况下
@ConditionalOnMissingClass:当类路径下没有指定类的条件下
@ConditionalOnNotWebApplication:当前项目不是Web项目的条件下
@ConditionalOnProperty:指定的属性是否有指定的值
@ConditionalOnResource:类路径是否有指定的值
@ConditionalOnSingleCandidate:当指定Bean在容器中只有一个,或者虽然有多个但是指定首选Bean
@ConditionalOnWebApplication:当前项目是Web项目的条件下。
上面@ConditionalOnXXX都是组合@Conditional元注解,使用了不同的条件Condition