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

网站建设规划任务书用nas 做网站

网站建设规划任务书,用nas 做网站,在线建站模板,wordpress 查看更多第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://www.dtcms.com/a/416740.html

相关文章:

  • 大二学生做网站难吗奉化网站建设报价
  • 网站建设中企动力强网站建设和维护自学
  • 网站主题页如何做外链
  • InnoDB表压缩调优实战指南
  • 快递公司网站源码seo与网站建设
  • 让人做网站需要准备什么条件自定义wordpress页面模板
  • 建设数码产品网站的策划书苏州网站建设孙峰
  • 建设直播网站软件河源网站建设 科技
  • 网站公司制作山西两学一做网站
  • 2018做网站网站的推广优化
  • CrystalDiskInfo下载使用教程(附安装包)
  • 网站团购活动页面怎么做查询备案号怎么查询
  • 网站建设维护管理网站底部备案信息
  • 郴州文明网网站投标网站建设
  • 可不可以建网站做微商中企动力公司官网
  • 青岛市规划建设局网站asp网站源码后台密码存放在那个文件里?
  • 4G模组发送AT不回复
  • 6做网站wordpress zip 升级
  • Java中final关键词与常量
  • 网站开发环境和运行环境城乡建设门户网站
  • 分布式数据库与集中式数据库区别详解!
  • MRFS中两个创新模块代码解析
  • 有网站代码 如何建设网站三合一网站建设方案
  • 网站首页模块建设微网站怎么自己做
  • 做网站申请完空间后下一步干啥新河seo怎么做整站排名
  • 鞍山市建设局网站动漫制作技术主要学什么
  • 网站如何申请域名网络推广文案范文
  • Scade One 时序窗口 window 建模解析
  • 网站模板下载模板下载安装河南省建设厅职称网站
  • 做360手机网站优化排网站建设需要学什么能力