首页 > 其他分享 >spring boot企业级开发教程学习笔记——第二章

spring boot企业级开发教程学习笔记——第二章

时间:2024-03-20 15:13:15浏览次数:17  
标签:spring boot 企业级 Bean 实例 注解 Cat yml

  记录笔记。

  给亲友看的笔记,干劲十足(希望她看得懂,因为我不会教人)

一.重要前提

  再次强调:springboot是为了优化spring的冗重的xml文件配置,spring的注解会更加丰富,但是springboot的思想还是跟着spring走。

  spring的重要思想是:

  说到容器,就必须要讲到一个东西Bean,按照我的理解,可以把Bean这个东西当成一个类(话说java的确实应该是类),容器使用的都是Bean实例,所以要将某个类(主要类)加入到容器里面,然后再在启动类里面使用方法(好像是getBean)在spring容器里面获得该主要类的Bean实例,获得Bean实例了才可以调用主要类的方法。

  springboot也是差不多的,它需要一个Bean实例,而这个Bean实例可以抽象地认为和自定义编写的类是有关的,只要有对应类(主要类)的bean实例,就可以实现里面的方法。bean实例可以认为是由自定义编写的类的实例抽象(不用思考具体实现)转化来的。

  先按照书本上的来:

二.全局配置文件和属性注入

  配置文件有两种,application.properties和application.yml,如果没有yml文件那么可以自己新建一个,properties后缀比yml后缀优先级要更高点,所以两个文件都有的话,建议使用yml文件注释掉properties文件内容。

  配置文件一般是用来属性注入的(也就是设置主要类的属性值),可能有别的用法但是这里就先理解到这里就行了。

  说到属性注入,有两种方式,一种是使用注解@Value和注解@ConfigurationProperties。

  @value方式:

    这里参考以下spring架构程序的写法,spring架构的主要写法(我自己总结的)是主要类+xml配置+测试类(启动类),主要类可以理解成自定义编写的类。

    那么springboot架构的写法或许可以简易理解成主要类+properties/yml + 测试类。

    主要类:(主要类建立在src/main/java/某个包里面,主要类结构等级必须比启动类的低)

    可以发现有一个@Value注解,观察格式。

    还可以发现有一个@Component,这个注解作用是将某一个主要类作为组件加入spring容器,好让该主要类可以通过自己的实例来获得对应的Bean实例(我习惯说成Bean相关主要类)

     properties/yml文件(结合主要类的@Value注解看):properties文件

或者是yml文件

    properties和yml文件是有各自的格式的,注意观察,注意yml文件属性和值之间是有一个空格的。

    properties格式示例:

     yml文件格式示例: 

     在行内式和缩进式选一种即可,我选的是行内式,如果是数组(包括List)那么就是使用[],如果是map那么就使用{},其他一概什么都不用,不用双引号直接输入值就可以了。

    话题转回来,yml和properties讲完后就是下一步测试类了。

    测试类(启动类):(spring是三部曲,这里两部曲就可以了)   

     两部曲第一:使用Autowired注解将某一个类放进容器里面生成自己的实例然后再生成一个Bean实例,先遮掉这个注解不要看,会发现就是一个普通的声明语句,类的实例都没有,再把这个Autowired放出来,会发现这个类有了实例了(通过properties/yml文件和Compoent注解,Compoent注解使它得知可以生成什么类的实例)还生成了相关的Bean实例使得容器可以调用这个方法(spring容器用的是Bean实例,Bean实例用来调用主要类的方法),注意区分Compoent等类似注解,它们的作用是可以生成Bean实例而不是生成Bean实例。

    两部曲第二:调用自己的方法,如果是测试方法那么加个@Test即可,如果是启动类那么直接调用即可。

    然后注意测试类一定要加上RunWith和SpringBootTest。

 @ConfigurationProperties属性注入方式:

    和Value方式有差异的地方是主要类的编写,因此这里就只放主要类部分。

    主要类:

     注意一定要有对应的set和get和toString方法,可以使用@Data简化。

   两者的区别:

 三.补充内容

  老师在课上不仅仅说过这些,以下是补充内容。

  我们刚才讲的都是属性注入,是形成一个空间(也就是实例)然后将属性值放进去。我们的主要类实例一般是Autorwied帮忙生成的,其实生成实例还有一种方式,使用配置类,使用配置类的话主要类(自己编写的类)会多一个Config

  配置类:

    主要类1,对我们之前的Cat类编写一个CatConfig类。

     配置类由构造方法来创建实例,name的值仍然由properties/yml文件@获得(毕竟现在允许你们知道的知识就是他们是用在属性注入的),既然用到构造方法,那么就得去Cat类加入构造方法,这里使用Bean注解标识生成的实例可以让Autoriwed注解生成Bean实例,毕竟原先是Autoriwed负责生成主要类实例然后再生成Bean实例,把主要类实例给了配置类做那么就需要知道该实例需不需要生成Bean实例了嘛,没错,并不是每一个主要类(自己编写的类)都需要生成Bean实例,生成Bean实例的大头还是为了使用方法,如果某类里面只有属性的话且是为了其他主要类服务的话可以不用写@Bean注解,在spring里面我就遇到过)

   要使用构造方法那么就可以Insert+alt快捷键,或者可以使用@AllArgsConstructor和@NoArgsConstructor注解,意思都在代码里面写了。这里需要注意的是,Compoent注解不用写了,它有一个作用是等待spring扫描器扫过来的时候提醒容器可以生成该类的实例,但是实例我们自己生成了,所以这里不要写。

  yml文件和properties文件:照旧,省略。

  测试类(启动类):(注意事项都写在注解里面了。

   在启动类里面除了使用Autowired注解来使用,也可以直接使用ApplicationContext容器。如果使用该容器,默认所有Bean实例都已经生成了(不需要Autowired生成了)

  示例代码:

   再在这里衍生一下,如果想要在开始测试时候输出创建前和销毁后的两句话,建议看这个博客:

https://blog.csdn.net/qinwuxian19891211/article/details/109004937   课堂思考,不建议观看:

springboot的属性注入是value和C……,复习一下,springboot不需要xml文件,所以配置是在properties
ConfigurationProperties注解需要Data注解

//Configuration告诉spring容器是一个配置,可以作为组件来着,目前来看CatConfig是一个返回Cat实例的东西,
//配置类,配置类里面的cat方法是返回一个实例,也就是说,entity的Cat类不需要compoent作为bean放进容器,在这里的cat加上Bean代替compoent即可。
//也就是说,Compoent加上value和ConfigurationProperties,Cat类自己返回实例
//也可以,配置类里面返回Cat类实例+Bean注解,Cat类只是一个获取值的单纯的类而已。(Cat类需要用注解来省略构造函数,因为在这里new Cat就一定要用到Cat的构造函数
//构造函数需要的值就可以直接在这里声明,使得name只依赖application.yml而脱离Cat类(Springboot和spring记得区分开来,springboot不是用xml文件)
public class CatTest02 {
//这里使用这个注解是将Cat放进spring容器,其实是将配置类实现的实例放进这里的Cat,所以构造函数和这里的变量名字得是一样。
@Autowired
Cat cat;
//这里的变量名要和配置类里面的构造函数的名字是一样的,因为其实是那个实例进spring容器,为了改名不要那么麻烦,使用注解Q,Qualifier把值当成候选值
@Autowired @Qualifier("cat2")
Cat c2;
//也可以用R注解来代替A+Q注解
// @Autowired @Qualifier("cat2")
@Resource(name = "cat2")

总结以下配置类获得Cat实例(从而获得Bean实例)的方法:
配置类获得实例,Cat类获得值,yml文件,测试类。
如果使用配置类的话,除了常类做法(会记录到博客里面去),还可以这么写:
//使用ApplicationContext,直接搞到容器,下面的代码很容易理解
ApplicationContext applicationContext;
@Test
public void test03(){
//1.和spring差不多的做法
Cat c;
c = (Cat) applicationContext.getBean("cat2") ;//同样的,为了获得bean相关cat实例,这里是通过构造函数的名字来写的
// //或者
// c = applicationContext.getBean("cat2",Cat.class) ;
System.out.println(c);

// //2.for循环做法
// String[] names = applicationContext.getBeanDefinitionNames();//获得一堆bean名称(获得一堆bean指针)
// for (int i = 0; i < names.length; i++) {
// System.out.println(names[i]);
// }
// //下面的代码可以用来简洁代替for
// System.out.println(Arrays.toString(names));
}

四.待定

    生病了不舒服,待定。

   

标签:spring,boot,企业级,Bean,实例,注解,Cat,yml
From: https://www.cnblogs.com/clina/p/18085271

相关文章

  • Spring中@NotNull注解@Valid注解简介及使用
    前言在开发中,为了代码的稳定性不报空指针异常,经常需要判断前端传过来的值是否为空,为空的话就返回前端值为空的提示,才能进行下一步的操作,例如登录操作需要判断传过来的登录名和密码是否为空:@GetMapping("login")publicResultlogin(Useruser){if(StringUti......
  • SpringBoot添加跨域处理
    配置类实现WebMvcConfigurer接口重写addCorsMappings(CorsRegistryregistry)方法用registry对象添加映射路径、是否发送cookie、设置放行哪些原始域、放行哪行请求方法、放行哪些请求头信息、暴漏哪些请求头部信息@ConfigurationpublicclassCorsConfigimplements......
  • spring 路由安全
    资料SpringMVC—@RequestMapping原理讲解-1-陶庭开-博客园(cnblogs.com)SpringBoot之@Controller和@RequestMapping的实现原理_51CTO博客_controllerrequestmappingSpringMVC源码解析——HandlerMapping(处理器映射器)_springmvchandlermapping-CSDN博客【精选】......
  • 基于Java的校园电商物流云平台(Vue.js+SpringBoot)
    目录一、摘要1.1项目介绍1.2项目录屏二、功能模块2.1数据中心模块2.2商品数据模块2.3快递公司模块2.4物流订单模块三、系统设计3.1用例设计3.2数据库设计3.2.1商品表3.2.2快递公司表3.2.3物流订单表四、系统展示五、核心代码5.1查询商品5.2查询快递公......
  • 基于Java的医院门诊预约挂号系统(Vue.js+SpringBoot)
    目录一、摘要1.1项目介绍1.2项目录屏二、功能模块2.1功能性需求2.1.1数据中心模块2.1.2科室医生档案模块2.1.3预约挂号模块2.1.4医院时政模块2.2可行性分析2.2.1可靠性2.2.2易用性2.2.3维护性三、数据库设计3.1用户表3.2科室档案表3.3医生档案表3.4......
  • 基于Java的考研专业课程管理系统(Vue.js+SpringBoot)
    目录一、摘要1.1项目介绍1.2项目录屏二、功能模块2.1数据中心模块2.2考研高校模块2.3高校教师管理模块2.4考研专业模块2.5考研政策模块三、系统设计3.1用例设计3.2数据库设计3.2.1考研高校表3.2.2高校教师表3.2.3考研专业表3.2.4考研政策表四、系统展......
  • JAVA实战开源项目:高校大学生创业管理系统(Vue+SpringBoot)
    目录一、摘要1.1项目介绍1.2项目录屏二、功能模块2.1系统公告模块2.2创业项目模块2.3创业社团模块2.4政府政策模块2.5创业比赛模块三、系统设计3.1用例设计3.2数据库设计3.2.1系统公告表3.2.2创业项目表3.2.3创业社团表3.2.4政策表四、系统展示五、核......
  • 【基于springboot旅游管理系统的毕业设计】
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 基于springboot的私人健身与教练预约管理系统源码
    收藏关注不迷路1.项目介绍本项目致力于开发一套高效、便捷的私人健身与教练预约管理系统,通过运用先进的Java技术、SpringBoot框架以及MIS(管理信息系统)的总体思想,结合Mysql等数据库技术的支持,实现了健身与教练预约管理的全面信息化。2.开发技术开发语言:Java框架:spring......
  • springboot/java/php/node/python情侣空间微信小程序【计算机毕设】
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在当今社会,随着科技的迅猛发展和智能移动设备的普及,人们的社交方式正在经历着翻天覆地的变化。特别是年轻情侣之间,他们更倾向于通过数字化平台来表达情感......