Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
Spring框架是Java平台的一种开源框架,提供有控制反转特性的容器(ioc容器),ioc旨在方便项目维护和测试,他提供一种通过Java的反射机制对Java的对象进行统一的配置和管理的方法,同时通过ioc容器管理对象的生命周期,通过扫描xml文件或类上特定Java注解来配置对象,程序员可以通过依赖查找和依赖注入来获取对象。springAop框架基于代理模式,aop框架针对模块之间的交叉点进行模块化。spring框架下的事务管理,远程访问等功能均可以通过使用SpringAOP技术实现,spring的事务管理框架为Java平台带来了一种抽象机制,使所有的事务能够与保存点一起工作,并且可以在
在 Spring 体系中,Spring Boot JPA 就是约定优于配置最佳实现之?,不需要关注表结构,我们约定类名即是表名,属性名即是表的字段,String 对应 varchar,long 对应 bigint,只有需要?些特殊要求的属性,我们再单独进?配置,按照这个约定我们可以将以前的?作??的简化。Spring Boot 体系将约定优于配置的思想展现得淋淋尽致,?到配置?件,中间件的默认配置,?到内置容器、?态中的各种 Starters ?不遵循此设计规则。Spring Boot ?励各软件组织?创建??的 Starter,创建
Starter 的核?组件之?就是 autoconfigure 模块,也是 Starter 的核?功能,在启动的时候进??动装配,属
性默认化配置。
可以说正是因为 Spring Boot 简化的配置和众多的 Starters 才让 Spring Boot 变得简单、易?、快速上?,也可以说正是约定优于配置的思想的彻底落地才让 Spring Boot ?向辉煌。Spring Boot 约定优于配置的思想让Spring Boot 项??常容易上?,让编程变的更简单,其实编程本该很简单,简单才是编程的美。
微服务:架构风格
一个应用是一组小型服务:可以通过hTTP的方式进行互通
单体应用:每一个功能元素最后都是可以独立升级替换的服务单元
jdk 推荐1.7及以上
maven 推荐3.3及以上
Intellij IDEA sts
spring Boot1.5.9
1,创建一个maven工程
2,导入springboot相关依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
</dependency>
?
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
3,编写一个主程序
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
?
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.8.RELEASE</version>
</parent>
他的父项目 。。。。。
导入依赖有默认版本不需要导入版本号
没有在dependencies里面管理的需要导入版本号
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
spring-boot-starter:springboot的场景启动器,导入了web的依赖版本模块
springboot将所有的功能场景都抽取出来,做成一个starter启动器,使用时导入相关场景启动器。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
?
@SpringBootApplication 注解标注在那个方法上,该方法就是主启动类
@SpringBootApplication注解的配置类
标注在某个类上表示这是一个springboot配置类
@Configuration:配置类上来标注这个注解;
配置类--配置文件;配置类也是容器中的额一个组件;@Component
@EnableAutoConfiguration 开启自动配置功能
@AutoConfigurationPackage 自动配置包
@Import({Registrar.class})
spring的底层导入注解@import给容器中导入一个组件:导入的组件Registrar.class
将主配置类(@SpringBootApplication标注的类)的包以及下面所有子包扫描进配置类
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Import({Registrar.class})
public @interface AutoConfigurationPackage {
}
?
@Import({AutoConfigurationImportSelector.class})
给容器中导入组件,导入的就是后面的类的组件
导入的组件以全路径类名的方式返回,这些组件就会被添加到容器中
会给容器导入非常多层次的自动配置类:XXXAutoConfiguration就是给容器中导入自动配置的组
默认生成的springboot项目
主程序已经生成好了,我们只需要我们自己的逻辑
resource文件夹的目录架构
static保存静态资源:js/css/image
templates:保存所有的模板页面 :(spring Boot默认jar包使用嵌入式的tomcat)可以使用模板引擎
application.properties:springboot应用的配置文件
springboot使用的是一个全局的我配置文件,配置文件名是固定的
application.properties
application.yml
配置文件的作用,就是修改springboot的默认值
yaml(yaml ain`t Markup language)
标记语言
以前的配置文件都是XXX.xml
properties:
server.port=8080;
yml
server:
• port: 8081
xml
<server>
<port>8082</port>
</server>
K: V表示一对键值对(空格必须要)
以空格的缩进来控制层级关系:只要是左对齐的一列数据,都是一个层级的
server:
• port: 8081
path:/hello
k:v字面直接来写字符串不用加引号
"":双引号 不会转义特殊字符\n--->换行
‘‘:单引号 会转义特殊字符 \n--->\n
k:v 对象还是这种方式
friend:
?
• lastName: zhangsan
?
• age: 20
行内写法
friend: {lastName: zhangsan,age: 20}
用-短横线表示数组中的一个元素
pets:
-cat
-dog
行内写法
pets: [cat,dog]
@CONFIGURATIONPROPERTIES | @VALUE | |
---|---|---|
功能 | 批量注入 | 单个注入 |
松散语法 | 支持 | 不支持 |
SpEL | 不支持 | 支持 |
JSR303数据校验 | 支持 | 不支持 |
复杂类型封装 | 支持 | 不支持 |
配置文件yml还是properties都能获取到值
如果说,我们只是在配置文件中获取某个值使用@Value来何配置文件
如果说,我们专门编写一个JavaBean,我们就直接使用@ConfigurationProperties
/*
* 将配置文件的值映射到配置文件中(
* @ConfigurationProperties 把配文件的值和Person的属性进行绑定
* */
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
// @Value("${person.last-name}")
private String lastName;
@PropertySource
@PropertySource(value = {"classpath:application.properties"})
@Component
@ConfigurationProperties(prefix = "person")
@ImportSource导入spring配置文件 让里面的内容生效
Spring Boot里面没有spring的配置文件,我们自己写的也没办法生效
@ImportResource(locations = {"classpath:beans.xml"})
?
Spring Boot推荐添加组件方式
推荐使用全注解的方式
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd>
<bean id="helloService" class="com.xja.hellodemo2.demo.service.HelloService"></bean>
</beans>
1配置类====spring配置文件
/*
* @Configuration当前类是个配置类
* <bean>添加
* */
@Configuration
public class MyAppConfig {
//将方法的返回值添加到容器中,容器中这个组件默认id就是方法名
@Bean
public HelloService helloService(){
System.out.println("成了");
return new HelloService();
}
?
}
person.last-name= zhangsan${random.uuid}; person.age=${random.int} //随机数
person.dog.name=${person.hello:hello}_dog //默认值
原文:https://www.cnblogs.com/liudongshuai/p/11638130.html