您现在的位置是:首页 >技术交流 >SpringBoot编程---Day 01网站首页技术交流

SpringBoot编程---Day 01

小麦穗呀 2024-10-28 12:01:05
简介SpringBoot编程---Day 01

目录

一、springboot介绍

(一)Spring Boot 特性

(二)了解自动配置原理

(三)springboot 入口功能详解

(四)自定义banner

(五)容器功能

(六)配置文件

二、相关注解

(一)创建Bean相关的注解

(二)Bean生命周期相关的注解

(三)依赖注入相关的注解 自动装配

(四)Spring MVC常用注解

(五)元注解

一、springboot介绍

        Spring Boot 是所有基于 Spring 开发的项目的起点。 Spring Boot 的设计是为了让你尽可能快的跑起来Spring 应用程序并且尽可能减少你的配置文件。简单来说就是 SpringBoot 其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven 整合了所有的 jar 包, spring boot 整合了所有的框架。

(一)Spring Boot 特性

        1、快速构建基于 Spring 的应用程序
        2、通过 Java main 能够快速启动内嵌的 Tomcat ,不需要打包部署 war
        3、可以根据提供 pom start 简化 Maven 配置,让 Maven 配置更加简单
        4、自动配置 Spring Spring MVC
        5、采用注解配置,几乎不用使用 XML 配置文件

(二)了解自动配置原理

        依赖管理
        自动配置

(三)springboot 入口功能详解

        @SpringBootApplication 组合注解 开启spriingboot的核心配置注解,等同于:@SpringBootConfiguration+@EnableAutoConfiguration + @ComponentScan。
        @SpringBootConfiguration相当于@Configuration 指定当前 java 类是一个配置类。
        @EnableAutoConfiguration 实现自动配置
        @ComponentScan 组件扫描 用来扫描文件所在包

(四)自定义banner

        1、先去编辑自己想要的banner(在线 Banner 地址:http://www.network-science.de/ascii/ https://patorjk.com/software/taag/ )

        2:将生成好的 banner.txt 文件放在 src/main/resources 下即可 [ 注意缓存需要 clean 一下 ]

(五)容器功能

        @Configuration的基本使用
        配置类组件
        @Bean 当前方法交给容器管理
         原生配置文件引入, 需要用到 @ImportResource 注解
        @Import 也可以导入配置文件,但是这个配置文件是【自定义的 java eg MyConfig
@Import({User.class,Matcher.class})
// 引入 xml配置
@ImportResource("classpath:spring.xml")

(六)配置文件

        配置文件类型:
        1 : application.properties
        2: application.yaml 类型
        基本语法:
        1 : key:value
        2:大小写敏感
        3:用缩进表示层级关系
        4:缩进不允许使用 tab 键 ,只允许使用 4 个空格
        5: # 代表注释
        6:字符串不需要加引号
        自定义配置文件
# 配置 端口号
# 优先级更高
server.port=8887
#spring.banner.image.location=classpath:tiao.jpg
#配置项目名称
#server.servlet.context-path=/demo
#配置文件可以自定义的
com.text.name = zhangsan
com.text.age = 18
com.text.sid = 1001

二、相关注解

(一)创建Bean相关的注解

        (1)@Component :可以使用此注解描述 Spring 中的 Bean ,但它是一个泛化的概念,仅仅表示一个组件( Bean ),并且可以作用在任何层次。使用时只需将该注解标注在相应类上即可。
        (2)@Repository:用于将数据访问层(DAO 层)的类标识为 Spring 中的 Bean ,其功能与 @Component 相同。
        (3)@Service:通常作用在业务层(Service 层),用于将业务层的类标识为 Spring 中的 Bean ,其功能与@Component 相同。
        (4)@Controller:通常作用在控制层(如 Struts2 Action SpringMVC Controller ),用于将控制层的类标识为Spring 中的 Bean ,其功能与 @Component 相同。

(二)Bean生命周期相关的注解

        (1)@Scope:注解在类名上,用于指定Bean 作用范围,等同于 xml 文件中配置 Bean 时使用 scope 属性。常用值singleton、 prototype
        (2)@PostConstruct:注解在方法上,指定Bean 创建时回调方法。相当于 xml 配置文件中标签中使用 init-method 属性的功能。
        (3)@PreDestroy:注解在方法上,指定Bean 销毁时回调方法。相当于 xml 配置文件中标签中使用 destroy-method 属性的功能。

(三)依赖注入相关的注解 自动装配

        (1)@Autowired
        自动装配:自动装配就是指 Spring 容器在不使用 和 标签的情况下,可以自动装( autowire )相互协作的 Bean之间的关联关系,将一个 Bean 注入其他 Bean Property 中。
        自动装配只需要较少的代码就可以实现依赖注入。但不能自动装配简单数据类型,比如 int boolean 、String 等,相比较显式装配,自动装配不受程序员控制。
        @Autowired注解可以应用到 Bean 的属性变量、属性的 setter 方法、非 setter 方法及构造函数等,配合对应的注解处理器完成 Bean 的自动配置工作。默认按照 Bean 的类型进行装配。
        (2)@Resource
        作用与 Autowired 相同,区别在于 @Autowired 默认按照 Bean 类型装配,而 @Resource 默认按照Bean 实例名称进行装配。
        @Resource 中有两个重要属性: name type
        Spring 将 name 属性解析为 Bean 的实例名称, type 属性解析为 Bean 的实例类型。如果指定 name属性,则按实例名称进行装配;如果指定 type 属性,则按 Bean 类型进行装配。如果都不指定,则先按Bean 实例名称装配,如果不能匹配,则再按照 Bean 类型进行装配;如果都无法匹配,则抛出NoSuchBeanDefinitionException 异常。
        (3)@Qualifier
        与 @Autowired 注解配合使用,会将默认的按 Bean 类型装配修改为按 Bean 的实例名称装配, Bean的实例名称由 @Qualifier 注解的参数指定。
        (4)@Value
        @Autowired注入另外的 bean ,而 @Value 注解则是注入值。由于在 java 源代码中注入常量值会带来硬编码问题,该注解使用较少。

(四)Spring MVC常用注解

        (1)@Controller:用于定义控制器类,控制器Controller 负责处理由 DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该 Model 返回给对应的 View 进行展示。
        (2) @RequestMapping:提供路由信息,负责URL Controller 中的具体函数的映射。
(注意:没有指定 method 属性值 ,那么请求处理方法可以支持 HTTP GET , POST 请求方式)

        (3)@ResponseBody:控制器方法加上 @ResponseBody注解后,返回值不是页面,而是数据。@ResponseBody注解过的方法,可以返回Map<String, Object>对象,spring mvc会将该对象转换成 json格式的字符串,然后放在响应体中响应给浏览器。(json格式与java对象的相互转换,需要添加jackson依赖 )

        (4)@RestController :@Controller和@ResponseBody的合集。 (注:Spring4.0增加的,继承自@Controller相当于 @Controller @ResponseBody

        (5)@RequestParam:在SpringMVC后台控制层获取参数,类似一种是request.getParameter(“name”)

        注解在方法的参数上,指定一个请求参数名,封装到被注解的参数 。一旦有该注解,默认情况,一次请求中,必须要具有该指定的请求参数,否则服务器拒绝该次请求

        (6)@PathVariable :将请求URL中的模板变量映射到控制器方法的参数上,即取出uri模板中的变量作为参数。

        注解在方法的参数上,先在@RequestMapping中使用{占位符}来定义url ,使用@PathVariable("占位符") 来获取该占位符对应url中的值 封装到方法的参数中

        (7)@SessionAttributes:指定request域中共享的数据在session域中共享(特别注意:@SessionAttributes 只能声明在类上,不能声明在方法上!!)

        (8)@RequestHeader:用于获取请求消息中的请求头相关数据(/注解在方法的参数上,指定获取对应请求头的值,封装到方法的参数中)

        (9)@CookieValue:用于获取请求消息中的Cookie的值( 注解在方法的参数上,获取指定 cookie 的值,封装到方法的参数中 )
        (10)@GetMapping:组合注解,是@RequestMapping(method = RequestMethod.GET) 的缩写。该注解将限制只接受 HTTP GET的请求方式。
        (11)@PostMapping:组合注解,是@RequestMapping(method = RequestMethod.POST) 的缩写。该注解将限制只接受HTTP POST的请求方式。

(五)元注解

        元注解是 专门用来注解其他注解的注解 ,听起来有些绕口,实际上就是专门为自定义注解提供的注解。java.lang.annotation提供了四种元注解:
        l @Documented – 注解是否将包含在 JavaDoc
        l @Retention – 什么时候使该注解(SOURCE:仅存在于源代码中;CLASS:在 class字节码文件中存在;RUNTIME:运行时)
        l @Target – 注解用于什么地方
        l @Inherited – 是否允许子类继承该注解
        l @Repeatable - 是否可重复注解, jdk1.8
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。