当前位置: 首页 > news >正文

聊城网站制作公司电话百度站长收录提交入口

聊城网站制作公司电话,百度站长收录提交入口,建模e-r跟做网站有什么关系,wordpress添加html第1部分 Spring基础 第1章 Spring起步 1.1 什么是Spring Spring的核心是提供一个容器(container)。 称为Spring应用上下文(Spring application context)。 创建和管理应用的组件(bean),与上下文装配在一起。 Bean装配通过依赖注入(Dependency Injection,DI)。…

第1部分 Spring基础

第1章 Spring起步

1.1 什么是Spring

Spring的核心是提供一个容器(container)。

称为Spring应用上下文(Spring application context)。

创建和管理应用的组件(bean),与上下文装配在一起。

Bean装配通过依赖注入(Dependency Injection,DI)。

通过构造器参数和属性访问方法来实现。

<bean id = "inventoryService" class="com.example.InventoryService" />
<bean id = "productService" class="com.example.ProductService"><constructor-arg ref="inventoryService" />
</bean>

Java的配置更为常见,XML与Java是等价的。

@Configuration
public class ServiceConfiguration {@Beanpublic InventoryService inventoryService() {return new InventoryService();}@Beanpublic ProductService productService(){return new ProductService(inventoryService());}
}

@Configuration注解告知Spring这是一个配置类,会为Spring上下文提供Bean。

@Bean表明方法返回对象以Bean的形式添加到Spring上下文中,Bean的ID就是方法名

以上都是显式配置,Spring不能自动配置时才有必要性。

自动配置起源于自动装配(autowiring)和组件扫描(component scanning)。

组件扫描技术使得Spring能自动发现应用类路径下的组件,并创建成Bean。

自动装配技术使Spring能够自动为组件注入他们依赖的其他Bean。

强如SpringBoot才是王道。

1.2 初始化Spring应用

创建名为Taco Cloud的在线应用,墨西哥煎玉米卷。

Spring Initializr浏览器的Web应用,也是Rest API,生成Spring结构骨架。

使用的几种方式:

  • 通过https://start.spring.io/的Web应用
  • 命令行中使用curl命令
  • 命令行中使用SpringBoot命令行接口
  • Spring Tool Suite中创建新项目(我喜欢Eclipse)
  • IntelliJ IDEA中创建新项目
  • NetBeans中创建新项目
  • Apache NetBeans创建新项目
1.2.1 使用Spring Tool Suite初始化Spring项目

Eclipse先安装插件,Spring Tools。

File —> New —> Spring Starter Project。

我这里用的是Java17。

1.2.2 检查Spring项目的结构

项目结构,需注意一下几点:

  • mvnw,mvnw.cmd:这是Maven包装器(wrapper)脚本,即使机器上没装maven,也能构建项目。
  • pom.xml:Maven构建规范,维护了所有的包。
  • TacoCloudApplication.java:SpringBoot主类,会启动该项目。
  • static:存放任意浏览器提供服务的静态内容(图片、样式表、JS脚本等)。
  • templates:渲染内容到浏览器的模板文件。
  • TacoCloudApplicationTests.java:是简单测试类,确保Spring应用上下文加载成功。

POM文件,具体含义自己查吧。

也就是 Spring版本,依赖,插件,测试,关注一下。

引导类
package tacos;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class TacoCloudApplication {public static void main(String[] args) {SpringApplication.run(TacoCloudApplication.class, args);}}

注解表示是一个SpringBoot应用,main方法里运行应用。

SpringBootApplication是一个组合注解包括其他三个注解。

  • @SpringBootConfiguration:声明为配置类,后续可以添加基于Java的配置,是Configuration特殊形式。
  • @EnableAutoConfiguration:启用SpringBoot自动配置,此注解告诉SpringBoot自动配置认为我们会用到的组件。
  • @ComponentScan:启用组件扫描,通过像@Component,@Controller,@Service的注解声明其他类,容器自动注册为应用上下文的组件。
测试应用

命令行手动测试:

./mvnw package
...
java -jar target/taco-cloud-0.0.1-SNAPSHOT.jar

用Maven插件构建更简单

./mvnw spring-boot:run

用Maven指令运行测试类:./mvnw test

1.3 编写Spring应用

给项目添加一个主页,创建两个代码构件:

  • 控制器类,处理主页相关请求。
  • 视图模板,定义主页的样子。
1.3.1 处理Web请求

Spring自带的强大Web框架,SpringMVC。

SpringMVC核心是控制器(controller)的理念。

控制器是处理请求并以某种方式进行消息的响应的类。

面向浏览器应用中,控制器填充可选的数据模型并请求传递一个视图,便于生成HTML返回给浏览器。

编写以根路径(“/”)为请求的简单的控制器并处理请求,将请求转发至主页视图。

主页控制器
package tacos;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;@Controller//控制器
public class HomeController {@GetMapping("/")//处理对根路径"/"的请求public String home() {return "home";//返回视图名}}

Controller注解主要目的是让组件扫描将这个类识别为一个组件。

HomeController带有此注解,Spring组件扫描功能会自动发现它并创建bean。

实际上,Component,Service,Repository都有类似目的,作用都相同,只不过意思更能描述组件在应用中的角色。

home()是一个简单的控制器方法。GetMapping表明对/发送HTTP GET请求,由此方法来处理。

返回的String类型的home值会解析为视图的逻辑名,也就是Thymeleaf类路径中的模板名字。

注意:Thymeleaf,FreeMarker,JSP都是模板,为啥不用其他,官方建议的,也是好用的。

模板名称是逻辑视图名派生而来(也就是你返回哪个字符串,模板文件就叫这个名字),在加上"templates"前缀和".html"后缀。最终形成的模板路径将是"/templates/home.html"。

因此,我们需要将模板放到项目"/src/main/resources/templates/home.html"中。

1.3.2 定义视图

主页简单点,欢迎用户,不做其他事情。

TacoCloud主页模板
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Taco Cloud</title>
</head>
<body><h1>Welcome to...</h1><img th:src = "@{/images/TacoCloud.png}" />
</body>
</html>

先百度一张墨西哥玉米卷图片,处理后粘贴到images,没有在static下面建,本人用的是HTML5页面。

也就是说图片路径为:/taco-cloud/src/main/resources/static/images/TacoCloud.png

1.3.3 测试控制器

测试根目录"/“,发送HTTP GET请求期望得到成功结果,视图名home,结果内容包含"Welcome to …”。

针对主页控制器的测试
package tacos;import static org.hamcrest.CoreMatchers.containsString;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view;import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.web.servlet.MockMvc;@WebMvcTest(HomeController.class)//针对HomeController的Web测试
public class HomeControllerTest {@Autowiredprivate MockMvc mockMvc;//注入MockMVC@Testpublic void testHomePage() throws Exception {mockMvc.perform(get("/")) //发起对"/"的GET请求.andExpect(status().isOk()) //期望得到HTTP 200.andExpect(view().name("home")) //期望得到home视图.andExpect(content().string(containsString("Welcome to..."))); //期望包含的内容}
}

可以在IDE中运行,也可以用Maven命令:mvnw test

结果绿色。

1.3.4 构件和运行应用

调出boot仪表盘,Window —> Show View —> Boot Dashboard

启动后并运行。http://localhost:8080/

1.3.5 了解Spring Boot DevTools

DelTools为Spring开发人员提供了便利的开发期工具和特性。

  • 代码变后应用自动重启。
  • 浏览器资源变化后自动刷新浏览器。
  • 自动禁用模板缓存。
  • 如果使用H2数据库,内置了H2控制台。

需注意,DevTools不是IDE插件,不用使用特定IDEA都能很好运行。

用途是开发,生成环境自动禁用自己。

自动重新启动

启用DevTools时,程序加载JVM中的两个独立类加载器。

一类加载器加载Java代码,属性文件以及src/main/下所有经常变动的内容。

另一个类加载器加载依赖的库,不经常变化。

不足之处依赖库不会自动重新加载,要生效,重启应用。

浏览器资源变化后自动刷新浏览器

默认情况,Thymeleaf和FreeMarker模版方案配置时缓存模版解析结果。

生产环境,性能好,不用重新解析。

开发期要时时看到变化,则不要缓存模版。

自动启动LiveReload服务器,自动刷新浏览器,浏览器端可以安装插件。

内置的H2控制台

当前项目还未使用数据库,如使用H2数据库,DevTools自动启动H2控制台。

http://localhost:8080/h2-console

配置H2数据库
# 启用H2控制台(访问地址:http://localhost:8080/h2-console)
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console# 配置内存数据库(数据仅存在于应用运行期间,重启后丢失)
spring.datasource.url=jdbc:h2:mem:tacocloud
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=

《H2数据库》

1.4 俯瞰Spring风景线

要了解Spring的整体状况,只需查看完整版本的Spring Initializr Web表单列表。

鼓励去看一下,100多依赖项。

1.4.1 Spring核心框架

Spring核心框架是基础,核心容器和依赖注入框架,SpringMVC,基于模板的JDBC支持,WebFlux反应式Web框架。

1.4.2 Spring Boot

优势,starter依赖和自动配置。

其他特性:

  • Actuator洞察应用运行时的内部工作状况,包括指标,线程dump信息,应用的健康状况以及应用程序可用的环境属性。
  • 灵活环境属性规范。
  • 测试辅助功能外,对测试的额外支持。

SpringBoot提供了基于Groovy脚本的编程模型,Spring Boot CLI。

1.4.3 Spring Data

核心框架提供基本数据持久化支持外,Spring Data提供了令人惊叹的功能:将应用程序的数据存储库(repository)定义为简单的Java接口,定义存储和检索数据的方法使用一种特定的命名约定即可。

还可以处理多种不同类型数据库,关系型数据库(JDBC或JPA),文档数据库(Mongo),图数据库(Neo4j)等。

1.4.4 Spring Security

Spring Security解决了应用程序通用的安全性需求,包括身份验证,授权,API安全性。

1.4.5 Spring Integration和Spring Batch

Spring Integration解决了实时集成问题。

Spring Batch解决了批处理集成问题。

1.4.6 Spring Cloud

Spring Cloud是使用Spring开发云原生应用程序的一组项目。

推荐一本书:Thomas Vitale的Cloud Native Spring in Action(Manning,2020年)。

1.4.7 Spring Native

使用GraalVM原生镜像编译器将SpringBoot项目编译成原生可执行文件,从而使镜像启动速度显著加快,并且占用更小的空间。

更多信息搜GitHub关于spring-native代码库。


文章转载自:
http://stoic.c7625.cn
http://avellane.c7625.cn
http://recitative.c7625.cn
http://pusan.c7625.cn
http://slim.c7625.cn
http://ginglymus.c7625.cn
http://alpinist.c7625.cn
http://hydropical.c7625.cn
http://cartomancy.c7625.cn
http://pinholder.c7625.cn
http://lt.c7625.cn
http://amadavat.c7625.cn
http://overeat.c7625.cn
http://carton.c7625.cn
http://zillionaire.c7625.cn
http://doubled.c7625.cn
http://whites.c7625.cn
http://pyramidic.c7625.cn
http://gascogne.c7625.cn
http://gyrus.c7625.cn
http://macrocell.c7625.cn
http://elise.c7625.cn
http://interoceptive.c7625.cn
http://apiaceous.c7625.cn
http://office.c7625.cn
http://cablephoto.c7625.cn
http://reencourage.c7625.cn
http://vulcanise.c7625.cn
http://dislikeful.c7625.cn
http://solecize.c7625.cn
http://muddleheaded.c7625.cn
http://unrequited.c7625.cn
http://procuratorial.c7625.cn
http://cerite.c7625.cn
http://southeastern.c7625.cn
http://limation.c7625.cn
http://palaeethnology.c7625.cn
http://sect.c7625.cn
http://uninvoked.c7625.cn
http://lampson.c7625.cn
http://magic.c7625.cn
http://seedcase.c7625.cn
http://thrice.c7625.cn
http://troubadour.c7625.cn
http://expedition.c7625.cn
http://overperform.c7625.cn
http://phoneticist.c7625.cn
http://tangentially.c7625.cn
http://asphyxia.c7625.cn
http://microscopical.c7625.cn
http://clambake.c7625.cn
http://mauretanian.c7625.cn
http://immedicable.c7625.cn
http://philogynous.c7625.cn
http://congenial.c7625.cn
http://potentiality.c7625.cn
http://omission.c7625.cn
http://osnaburg.c7625.cn
http://lokanta.c7625.cn
http://tremellose.c7625.cn
http://sheer.c7625.cn
http://inaptitude.c7625.cn
http://tricar.c7625.cn
http://xanthophore.c7625.cn
http://franciscan.c7625.cn
http://invigilate.c7625.cn
http://damnous.c7625.cn
http://chromophore.c7625.cn
http://declutch.c7625.cn
http://okapi.c7625.cn
http://evaluable.c7625.cn
http://somatological.c7625.cn
http://helicopt.c7625.cn
http://outrode.c7625.cn
http://nucleosidase.c7625.cn
http://prodromic.c7625.cn
http://monophonemic.c7625.cn
http://unmurmuring.c7625.cn
http://sumptuousness.c7625.cn
http://clarence.c7625.cn
http://kedger.c7625.cn
http://codicil.c7625.cn
http://woodhorse.c7625.cn
http://dormouse.c7625.cn
http://foveate.c7625.cn
http://nauch.c7625.cn
http://electroconvulsive.c7625.cn
http://idempotence.c7625.cn
http://extracorporeal.c7625.cn
http://formidable.c7625.cn
http://paraselene.c7625.cn
http://serviceably.c7625.cn
http://syndicalist.c7625.cn
http://thermogenesis.c7625.cn
http://slatted.c7625.cn
http://gosport.c7625.cn
http://mesquit.c7625.cn
http://unlib.c7625.cn
http://delphin.c7625.cn
http://tartly.c7625.cn
http://www.zhongyajixie.com/news/95687.html

相关文章:

  • 有没有做php项目实战的网站网络营销做得好的公司
  • 网站不足长沙百度快照优化排名
  • 如何用群晖做自己的网站seo的推广技巧
  • 建设公司网站账务处理网站关键词优化排名推荐
  • 网站首页建设建议b站推出的短视频app哪个好
  • 怎样做网站卖自己的产品教程软文营销的作用
  • 广西网站建设liluokj百度推广开户免费
  • 党建网站建设 调研网站推广在哪好
  • 网站开发工具hb北京软件培训机构前十名
  • 网站怎么申请微信认证百度一下打开网页
  • 发布悬赏任务的推广平台seo厂家电话
  • 丹东做网站公司怎么做网站链接
  • 广东省建设信息网站网络营销推广方式有哪些
  • 知名网站制作推广怎么做
  • 阿里国际站韩语网站怎么做百度广告公司联系方式
  • c 网站建设设计报告搜索引擎快速排名推广
  • 电商网站 开发周期南京高端品牌网站建设
  • yii2框架做的网站有哪些太原做网站哪家好
  • 门户网站作用常用的营销策略
  • 邯郸做网站推广的地方百度seo优化怎么做
  • 智能产品设计案例网站优化排名软件网
  • 家用电脑做网站服务器搜索关键词优化服务
  • 网站推广协议seo快速建站
  • 长宁网站建设社群营销的十大步骤
  • 织梦网站查看原有文章百度app推广方法
  • 找外包做网站不给代码seo快照推广
  • 自己创建平台要多少钱班级优化大师头像
  • 怎样做网站优化衡阳有实力seo优化
  • 网站配置域名解析太原网络推广公司
  • 电影网站设计说明书惠州抖音seo策划