spring boot(学习笔记第二课)

spring boot(学习笔记第二课)


学习内容:

  1. 项目启动,打包启动
  2. https启动,http重定向到https
  3. 使用bean注入配置数据

1. 项目启动,打包启动

Spring boot的启动方式有好多,这里主要介绍两种。
第一种启动方式:
直接采用IntellIJ IDEA中进行启动(开发阶段)。
在这里插入图片描述
第二种启动方式:
我们可以将程序打包,进行单独的启动(脱离IntellIJ IDEA,生产阶段)
注意 Maven默认的packaging方式是jar,所以我们在springboot的起步程序的时候没有选择了jar打包,也不会生成如下的代码

<packaing>jar<packaging>

但是如果我们选择了war打包方式,就会出现。

<packaing>war<packaging>

那么就下来我们就行打包。
在这里插入图片描述
打包好了之后,会出现如下log

The original artifact has been renamed to D:\00_study\11_spring_boot\lecture\spring-boot-hello\demo\target\demo-0.0.1-SNAPSHOT.jar.original

这样执行如下命令,就会将这个jar包形式的web applition启动了。如果IntelliJ IDEA中的应用还在打开,那么请关闭,因为同时占有一个8080端口,会导致启动失败

Dell@DESKTOP-DHMQMJG MINGW64 /d/00_study/11_spring_boot/lecture/spring-boot-hello/demo/target (master)
$ java -jar demo-0.0.1-SNAPSHOT.jar

访问http://localhost:8080/hello,同样会看到我们的程序启动。

2. https启动,http重定向到https

通常在生产环境中我们都是采用https,所以我们对web application进行https的配置。

  1. 首先利用java自带的工具生成https的证书。
    keytool -genkey -alias hellohttps -keyalg RSA -keysize 2048 -keystore httpskey.p12 -validity 365 -J-Duser.language=en
    alias 表示证书的别名,我们之后会用到
    keystore 表示证书的文件名
    password 在这个过程中的设置密码,这个在稍后会使用设定。
    -J-Duser.language=en 这里指定英语,中文的时候会出现确定不了的问题。

在我们的resources/文件夹下创建key文件夹,之后把httpskey.p12文件放到这个resources\key文件夹下。因为resources是我们的classpath,所以设定证书文件夹的时候比较方便。
2. 修改我们的https证书设定

server.ssl.key-store=classpath:/key/httpskey.p12
server.ssl.key-alias=hellohttps
server.ssl.key-store-password=123456
  1. 重新启动我们的web application
 Tomcat initialized with port 8080 (https)
  1. 使用https链接hello,world
    在这里插入图片描述
  2. 点击高级->继续前往localhost(不安全),之后继续访问。
    在这里插入图片描述
  3. http的请求重定向到https
    如果需要就是要使用http的协议来访问应用程序,那么可以进行配置spring boot,进行请求的重定向。
  • 定义tomcat的配置类,在这个类里面,生成TomcatServletWebServerFactory的bean。
  • 之后在定义出http协议专用的connector,并追加到这里的 TomcatServletWebServerFactory的bean里面。注意这里http的端口必须和8080区分开,这里我们采用8081端口
@Configuration
public class TomcatConfig {
    @Bean
    public TomcatServletWebServerFactory tomcatServletWebServerFactory() {
        TomcatServletWebServerFactory tomcatServletWebServerFactory =
                new TomcatServletWebServerFactory();
        tomcatServletWebServerFactory
                .addAdditionalTomcatConnectors(createTomcatConnector());
        return tomcatServletWebServerFactory;
    }
    private Connector createTomcatConnector(){
        Connector httpConnector = new Connector(
                "org.apache.coyote.http11.Http11NioProtocol"
        );
        httpConnector.setPort(8081);
        httpConnector.setSecure(false);
        httpConnector.setScheme("http");
        httpConnector.setRedirectPort(8080);
        return httpConnector;
    }
}
  1. 进行http访问测试。
    在这里插入图片描述
    同样我们能够访问http的8081端口,其实这个是8080的https协议端口。

3. 使用bean注入配置数据

  1. 我们可以在application.properties里面自己定义数据,通过bean的方式注入到web application。
shop.name="finlay shop"
shop.owner="finlay"
shop.location="china"
  1. 创建bean类,将数据注入进来。
    在这里插入图片描述
@Data
@Component
@ConfigurationProperties(prefix = "shop")
public class ShopConfig{
    private String name;
    private String owner;
    private String location;
}

注意@configurationProperties的注解,有一个prefix参数,这里设定了shop,和前面properties里面的名字是一致的

@Component这个注解表示这个类是一个bean类,spring boot的启动阶段会将这个类自动生成一个实例。
@configurationProperties表示这个bean类会自动解释application.properties里面的变量设定,并且前缀prefix是shop的。

@Data这个注解需要特殊解释下。它属于lombok的组件的一部分。因为大多数的bean数据类都需要getter和setter,每次追加都比较麻烦,lombok给我们提供了方便,我们在定义bean类的时候,比如说上面的ShopConfig类,我们就需要定义各个private String的字段就可以,至于getter和setter函数,通过注解@Data,都会自动给我们生成。

IntelliJ IDEA上加入需要两个步骤。

  • 首先在IntelliJ IDEA中加入lombok的plugin。
    在这里插入图片描述
  • 还有就是在使用的时候,在bean类定义的时候,加上@Data,这个注解加上后,lombok就能给自动加上getter和setter,省去了很多步骤。
    加入的时候@Data会找不到包,ALter+Enter之后,IntelliJ IDEA会自动为你增加maven的依赖,并加入import在这里插入图片描述
  1. 使用自定义的bean类。
    HelloController中使用将这个bean进行AutoWired
    @Autowired
    private ShopConfig shopConfig;

在这里插入图片描述
这个时候,shopConfig这个变量就会自动被赋值,AutoWired之后,这个值就是在web application启动的时候被自动注入的变量。

  • 22
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值