前言
通过对springboot的研究,了解了springboot的运作流程,以及相关的配置方式。从而了解springboot的初级使用。总结一些springboot的知识,留作备忘录。
springboot的理念
springboot是spring配置由xml配置向注解配置以及java代码方式配置的升级,springboot的理念是”约定胜于配置”,这句话让笔者想起了淘宝的webx框架(这个框架很不好用)。当然spring的约定还是挺好理解的。
通过springboot我们可以创建独立运行的jar包,springboot中内置了,tomcat容器的核心。通过springboot我们也可以创建微服务。
springboot的java配置方式
一个java类代表一个配置文件,一个方法可以配置一个bean,成员变量可以引入其他的bean和基本配置项(比如jdbc常量)。
核心注解:
@Configuration 作用于类上,代表这是一个配置文件
@Bean 作用于方法上,相当于xml文件中的bean标签
@ConponentScan 包扫描,作用于类上,配置要扫描的包路径
@PropertySource,引入properties文件,可以引入数据库的key-value值
@ImportResource 引入其他的xml文件,实现xml与注解的混用
@Value 作用于成员变量,引入properties文件的值。
package cn.itcast.springboot.javaconfig;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import com.jolbox.bonecp.BoneCPDataSource;
@Configuration
// 通过该注解来表明该类是一个Spring的配置,相当于一个xml文件
@ComponentScan(basePackages = "cn.keyi.springboot.javaconfig")
// 配置扫描包
@PropertySource(value = { "classpath:jdbc.properties" }, ignoreResourceNotFound = true)
public class SpringConfig {
@Bean
// 通过该注解来表明是一个Bean对象,相当于xml中的<bean>
public UserDAO getUserDAO() {
return new UserDAO(); // 直接new对象做演示
}
@Value("${jdbc.url}")
private String jdbcUrl;
@Value("${jdbc.driverClassName}")
private String jdbcDriverClassName;
@Value("${jdbc.username}")
private String jdbcUsername;
@Value("${jdbc.password}")
private String jdbcPassword;
@Bean(destroyMethod = "close")
public DataSource dataSource() {
BoneCPDataSource boneCPDataSource = new BoneCPDataSource();
// 数据库驱动
boneCPDataSource.setDriverClass(jdbcDriverClassName);
// 相应驱动的jdbcUrl
boneCPDataSource.setJdbcUrl(jdbcUrl);
// 数据库的用户名
boneCPDataSource.setUsername(jdbcUsername);
// 数据库的密码
boneCPDataSource.setPassword(jdbcUsername);
// 检查数据库连接池中空闲连接的间隔时间,单位是分,默认值:240,如果要取消则设置为0
boneCPDataSource.setIdleConnectionTestPeriodInMinutes(60);
// 连接池中未使用的链接最大存活时间,单位是分,默认值:60,如果要永远存活设置为0
boneCPDataSource.setIdleMaxAgeInMinutes(30);
// 每个分区最大的连接数
boneCPDataSource.setMaxConnectionsPerPartition(100);
// 每个分区最小的连接数
boneCPDataSource.setMinConnectionsPerPartition(5);
return boneCPDataSource;
}
}
springBoot的启动方式
springboot的入口时一个习惯命名为:xxxApplication的java文件的main函数。通过运行main函数,启动springboot的容器。
@SpringBootApplication(exclude = { RedisAutoConfiguration.class })
public class HelloApplication {
public static void main(String[] args) {
SpringApplication.run(HelloApplication.class, args);
}
}
通过这种方式,就可以实现springboot应用的启动。
自定义Banner
启动时,我们可以看到形如springboot的启动动画,当然我们也可以自定义我们的启动动画,通过网上的某些工具,可以生成我们想要的文字。
定义一个名称为,bannner.txt的文件放入classpath的根目录下,重启应用,就可以了。
springboot的pom文件配置。
当然,这是maven项目的配置,也是一切的根本,一个项目,肯定要有依赖和jar包。
需要配置父pom
springboot的父pom和依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
</parent>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
springboot和其他框架的继承
springboot继承了很多其他框架的继承,当然我们也可以手动配置。
springboot有个start pom通过引入提供的其他的框架的pom依赖,就可以实现spring的技术配置。这样的方式,springboot项目就支持相应的框架集成。
这里涉及到一个全局配置文件。application.properties
这个文件,用于配置容器的拦截规则、端口号、日志、静态资源路径、springmvc的解析器的配置等等。
server.port=8088
server.servlet-path=/
spring.resources.static-locations=classpath:/public/
logging.level.org.springframework=DEBUG
总结:springboot框架,由传统的xml配置方式,向注解和自动配置进化的结果,通过spring框架去除复杂的配置,复杂的部署流程,第三方的集成难度大的问题,springboot的出现,省去了程序员复杂的工作,可以说是我们程序员的福音啊。