栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SSM整合、springboot

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SSM整合、springboot

SSM整合

  1. 基础环境

    1. 数据库
    2. Pom(依赖、资源过滤)
    3. 基本结构(包、xml配置文件)
  2. Mybatis层编写

    1. 数据库连接 properties
    2. mybatis.xml
    3. 实体类
    4. 接口、mapper接口
    5. service、service实现类
  3. Spring层编写

    1. 整合mybatis(spring-dao.xml)

      1. 关联数据库文件
      2. 配置数据源
      3. sqlSessionFactory
      4. 配置自动扫描包 扫描dao层接口,动态注入到spring 容器
    2. 整合service

      1. 扫描 service 层下的接口
      2. 注入 service 实现类到IOC 容器中
      3. 配置事务管理器(注入数据库连接池)
  4. SpringMVC 层编写

    1. web.xml

      1. dispacherservlet注册
      2. encodingfilter
      3. session 过期时间
    2. spring-mvc.xml

      1. 注解驱动,等效于配置了映射器和适配器
      2. 静态资源默认servlet配置
      3. ViewResoulver 视图解析器
      4. 扫描 Controller
  5. applicationContext.xml

    1. import 三层Spring 配置文件
  6. 编写对应的controller和页面

微服务框架

https://martinfowler.com/articles/microservices.html

第一个SpringBoot 程序
  1. 官网生成
  2. IDEA 自动生成
  3. 自定义springboot banner
    1. 在线生成 https://www.bootschool.net/ascii
    2. 在resource 目录下新建banner.txt 粘贴进去
  4. 自动装配、run()
自动配置原理分析 pom.xml
  1. 父依赖


   org.springframework.boot
   spring-boot-starter-parent
   2.5.6
    

  1. 启动器

    	
    		
    		
    			org.springframework.boot
    			spring-boot-starter
    		
    		
    		
    			org.springframework.boot
    			spring-boot-starter-web
    		
    		
    		
    			org.springframework.boot
    			spring-boot-starter-test
    			test
    		
    	
    
  2. 打包插件

    
    		
    			
    				org.springframework.boot
    				spring-boot-maven-plugin
    			
    		
    
主启动类
// @SpringBootApplication 用来标注一个主程序类
// 说明这是一个 SpringBoot应用
// 标注在某个类上说明这个类是SpringBoot的主配置类 ,
// SpringBoot就应该运行这个类的main方法来启动SpringBoot应用;

@SpringBootApplication
public class Project01Application {

	// 启动服务
	public static void main(String[] args) {
		SpringApplication.run(Project01Application.class, args);
	}

}
@SpringBootApplication

标注在某个类上说明这个类是SpringBoot的主配置类 , SpringBoot就应该运行这个类的main方法来启动SpringBoot应用

他里面还有其他注解

@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
    excludeFilters = {@Filter(
    type = FilterType.CUSTOM,
    classes = {TypeExcludeFilter.class}
), @Filter(
    type = FilterType.CUSTOM,
    classes = {AutoConfigurationExcludeFilter.class}
)}
)
@ComponentScan

这个注解在Spring中很重要 ,它对应XML配置中的元素。

作用:自动扫描并加载符合条件的组件或者bean , 将这个bean定义加载到IOC容器中

@SpringBootConfiguration

作用:SpringBoot的配置类 ,标注在某个类上 , 表示这是一个SpringBoot的配置类;

这里的 @Configuration,说明这是一个配置类 ,配置类就是对应Spring的xml 配置文件;

里面的 @Component 这就说明,启动类本身也是Spring中的一个组件而已,负责启动应用!

@EnableAutoConfiguration

开启自动配置功能

@EnableAutoConfiguration 告诉SpringBoot开启自动配置功能

以前我们需要自己配置的东西,而现在 SpringBoot可以自动帮我们配置

@AutoConfigurationPackage
@import({AutoConfigurationimportSelector.class})
@AutoConfigurationPackage
@import({Registrar.class})

自动配置包

@import , 给容器中导入一个组件

Registrar.class 作用:将主启动类的所在包及包下面所有子包里面的所有组件扫描到Spring容器

@import({AutoConfigurationimportSelector.class})

给容器导入组件

AutoConfigurationimportSelector :自动配置导入选择器,

最终会指向一个 spring.factories 文件

spring.factories ,里面有很多自动配置的文件,这是自动配置的根源

主启动类的main 方法
public class Project01Application {
   // 启动服务
   public static void main(String[] args) {
      SpringApplication.run(Project01Application.class, args);
   }
}

一部分是SpringApplication的实例化,二是run方法的执行

这个类主要做了以下四件事情:

1、推断应用的类型是普通的项目还是Web项目

2、查找并加载所有可用初始化器 , 设置到initializers属性中

3、找出所有的应用程序监听器,设置到listeners属性中

4、推断并设置main方法的定义类,找到运行的主类

run() 方法运行原理

结论

所以,自动配置真正实现是从classpath中搜寻所有的meta-INF/spring.factories配置文件 ,并将其中对应的 org.springframework.boot.autoconfigure. 包下的配置项,通过反射实例化为对应标注了 @Configuration的JavaConfig形式的IOC容器配置类 , 然后将这些都汇总成为一个实例并加载到IOC容器中。

结论:

  1. SpringBoot在启动的时候从类路径下的meta-INF/spring.factories中获取EnableAutoConfiguration指定的值
  2. 将这些值作为自动配置类导入容器 , 自动配置类就生效 , 帮我们进行自动配置工作;
  3. 整个J2EE的整体解决方案和自动配置都在springboot-autoconfigure的jar包中;
  4. 它会给容器中导入非常多的自动配置类 (xxxAutoConfiguration), 就是给容器中导入这个场景需要的所有组件 , 并配置好这些组件 ;
  5. 有了自动配置类 , 免去了我们手动编写配置注入功能组件等的工作;
yaml

SpringBoot 使用的是一个全局配置文件,配置文件名是固定的

配置文件的主要作用就是 修改SpringBoot 自动配置的默认值,配置我们想要配置的。

支持properties、yaml 配置文件,可以同时存在,但有优先级

  • application.properties

    • 语法结构 :key=value
  • application.yml

    • 语法结构 :key:空格 value

“YAML Ain’t a Markup Language” (YAML不是一种标记语言)

这种语言以数据作为中心,而不是以标记语言为重点!

基础语法

1、空格不能省略

2、以缩进来控制层级关系,只要是左边对齐的一列数据都是同一个层级的。

3、属性和值的大小写都是十分敏感的。

字面量:普通的值 [ 数字,布尔值,字符串 ]

字面量直接写在后面就可以 ,

字符串默认不用加上双引号或者单引号;

key:空格 value

“ ” 双引号,不会转义字符串里面的特殊字符 , 特殊字符会作为本身想表示的意思;

’ ’ 单引号,会转义特殊字符 , 特殊字符最终会变成和普通字符一样输出

name: “ hello n world ” == hello 换行 world

name: ’ hello n world ’ == hello n world

对象、Map

key:
	value1:
	value2:
# 键值对写法
student:
	name:
	age:
	
# 行内写法
student: {name: monster,age: 18}

数组(List、set)

key:
	- value1:
	- value2:
# 键值对写法
pets:
 - cat
 - dog
 - pig
 
# 行内写法
pets: [cat,dog,pig]
注入配置文件
  1. yaml 配置
dog:
  name: 小红
  age: 10
  1. 实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
@ConfigurationProperties(prefix = "dog")
public class Dog {
    private String name;
    private int age;
}
  1. 测试
@SpringBootTest
class Project01ApplicationTests {
   @Autowired
   private Dog dog;
   
   @Test
   void contextLoads() {
      System.out.println(dog);

   }
}
JSR303 校验

Springboot中可以用@validated来校验数据,如果数据异常则会统一抛出异常

使用数据校验,可以保证数据的正确性

@NotNull(message="名字不能为空")
private String userName;
@Max(value=120,message="年龄最大不能查过120")
private int age;
@Email(message="邮箱格式错误")
private String email;

空检查
@Null       验证对象是否为null
@NotNull    验证对象是否不为null, 无法查检长度为0的字符串
@NotBlank   检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.
@NotEmpty   检查约束元素是否为NULL或者是EMPTY.
    
Booelan检查
@AssertTrue     验证 Boolean 对象是否为 true  
@AssertFalse    验证 Boolean 对象是否为 false  
    
长度检查
@Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内  
@Length(min=, max=) string is between min and max included.

日期检查
@Past       验证 Date 和 Calendar 对象是否在当前时间之前  
@Future     验证 Date 和 Calendar 对象是否在当前时间之后  
@Pattern    验证 String 对象是否符合正则表达式的规则

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/424330.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号