您现在的位置是:主页 > news > 做电商需要哪些网站/优化推广关键词

做电商需要哪些网站/优化推广关键词

admin2025/4/25 20:16:07news

简介做电商需要哪些网站,优化推广关键词,给我一个可以看片的免费,淘宝刷单网站制作技术/杨33一、SpringBoot做的自动配置确实方便快捷,执行下面这个启动类,就可以加载完成项目的所有依赖组件。package com.test.demo.springbootdemo01;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigur…

做电商需要哪些网站,优化推广关键词,给我一个可以看片的免费,淘宝刷单网站制作技术/杨33一、SpringBoot做的自动配置确实方便快捷,执行下面这个启动类,就可以加载完成项目的所有依赖组件。package com.test.demo.springbootdemo01;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigur…

技术/杨33


一、SpringBoot做的自动配置确实方便快捷,执行下面这个启动类,就可以加载完成项目的所有依赖组件。

package com.test.demo.springbootdemo01;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class SpringbootDemo01Application {    public static void main(String[] args) {        SpringApplication.run(SpringbootDemo01Application.class, args);    }}

项目中的其他包必须与此类在同级目录或者子包下 ,否则扫描不到。

363e8d0251d69f88f770be66bad58a39.png

项目中的其他包必须与此类在同级目录或者子包下

二、只有一个注解@SpringBootApplication和一个run方法是怎么实现自动配置的?

分别说一下这两个的原理到底是什么?

1、注解@SpringBootApplication

  • 打开@SpringBootApplication源码

看到重要的三个注解@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan

2f37f50698aebe236e4db5fc29112428.png

@SpringBootApplication源码

  • 注解@SpringBootConfiguration的源码又是@Configuration

标注了@Configuration,那么它就是一个Spring IOC容器的基于JavaConfig的配置类。

标注了@Bean,那么方法的返回值作为一个bean注册到Spring IOC容器中,方法名getHelloService()对应ioc容器的id。

对比下Java代码和XML配置分别实现注册bean

下面代码是基于JavaConfig的配置类实现注册bean,以及bean与bean之间的依赖关系

package com.test.demo.springbootdemo01.config;import com.test.demo.springbootdemo01.service.HelloService;import com.test.demo.springbootdemo01.service.UserService;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;/** * @author yang33 * @date 2020/4/18 23:06 */@Configurationpublic class BootConfig {    /**     * 将HelloService组件添加到容器中,方法名getHelloService()对应ioc容器的id     */    @Bean    public HelloService getHelloService() {        return new HelloServiceImpl(userService());    }    @Bean    public UserService userService() {        return new UserServiceImpl();    }}

下面代码是基于XML文件的配置实现注册bean,以及bean与bean之间的依赖关系

<?xml version="1.0" encoding="UTF-8"?>
  • 注解@ComponentScan的功能

其实就是自动扫描加载符合条件的组件(比如@Component和@Repository等)或者bean定义,最终将这些bean定义加载到Spring IOC容器中。

我们可以通过basePackages等属性来细粒度的定制@ComponentScan自动扫描的范围,如果不指定,则默认Spring框架实现会从声明@ComponentScan所在类的package进行扫描。

所以SpringBoot的启动类最好是放在root package下,因为默认不指定basePackages。

注解@EnableAutoConfiguration的功能
013c25a49366d9eee0cdf475d9fc897c.png

里面最关键的是@Import({AutoConfigurationImportSelector.class}),借助AutoConfigurationImportSelector,@EnableAutoConfiguration可以帮助SpringBoot应用将所有符合条件的@Configuration配置都加载到当前SpringBoot创建并使用的Spring IOC容器。

2、run方法

执行run方法,做了两件事。

第一,创建SpringApplication对象,new SpringApplication(primarySources);

第二,运行run方法,run(args)。

public static ConfigurableApplicationContext run(Class>[] primarySources, String[] args) {        return (new SpringApplication(primarySources)).run(args);}

三、SpringBoot自定义启动器starter

启动器只用来做依赖导入,专门写一个自动配置模块。启动器依赖自动配置,使用时只需要引入启动器(starter)。

启动器就是个空jar文件,仅提供辅助性依赖管理,这些依赖可能用于自动装配或者其他库。

1、启动器starter命名规范

  • 自定义命名规范

模块名-spring-boot-starter

  • 官方命名规范

spring-boot-starter-模块

2、配置自定义启动器需要两个项目

他俩的关系是启动器依赖自动配置。

  • xxx-starter,别的项目引用,只需引入该启动器即可,提供辅助性依赖管理。
  • xxx-autoconfigure,自动配置,给启动器提供依赖。

3、IDEA工具创建项目

  • 先创建启动器starter项目 demostarters
677573470d9c7d5b6c4b5b3c66cbc9fd.png

步骤1

840d9c45f9108faea14be46b3576c054.png

步骤2

cf005b4f031b123521d61473988cfbef.png

步骤3

0b4d51c86e6ee84a6642eca7db413630.png

步骤5

0c3aca766bb23c5ebb1b03ba13da63eb.png

步骤6

49ea7f5d630f2cfc4a4007b5839e0b30.png

步骤7

  • 在创建一个自动配置的项目 demo-spring-boot-starter-autoconfigure
18d470bf5fa2a00d664194e96d72af2e.png

步骤1

94b6c5589b277b603fd0b8e9ee24c353.png

步骤2

87809ef2cbd5f4a4e57059e4ba8a03b8.png

步骤3

4e940ad6640c96b6047b9f2354356b0f.png

步骤5

f7b5da47ff038827c13504f46603e85f.png

步骤6

最终创建的两个项目:启动器项目和自动配置项目,如图:

105e529c5bcf9efd9a6f3b7770c29e53.png

启动器项目和自动配置项目

4、代码实现两个项目

  • 启动器依赖自动配置,在启动器项目的pom.xml文件中添加自动配置项目的依赖
com.demo.starters      demo-spring-boot-starter-autoconfigure      0.0.1-SNAPSHOT
  • 添加一个UserService类
package com.demo.starters;/** * @author 杨33 * @date 2020/4/22 17:57 */public class UserService {    /**     * 用户名     */    private String name;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}
  • 再添加一个配置类UserServiceAutoConfiguration
package com.demo.starters;import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;/** * @author 杨33 * @date 2020/4/22 18:40 */@Configuration@ConditionalOnWebApplicationpublic class UserServiceAutoConfiguration {    /**     * 实现userService对象的初始化赋值     * @return     */    @Bean    public UserService getUserName() {        UserService userService = new UserService();        userService.setName("张三");        return userService;    }}
  • spring.factories中给UserServiceAutoConfiguration.java设置自动配置

spring.factories文件的存放目录必须在类路径的META-INF下。

spring.factories的配置内容:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.demo.starters.UserServiceAutoConfiguration

项目的代码层级如图:

317a210a4d57baca48314d6b53576b9b.png

自动配置项目的代码层级

  • 分别添加启动器项目和自动配置项目到maven仓库,供外部其他项目依赖
725e3e9dff595a8da924710c159bdc72.png

install到maven仓库

5、在外部项目,使用自定义的starter

  • pom.xml文件引入自定义的starter依赖
com.demo.starters      demo-spring-boot-starter      1.0-SNAPSHOT
  • java代码调用自定义的依赖提供的API
package com.test.demo.springbootdemo01.controller;import com.demo.starters.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;/** * @author yang33 * @date 2020/4/18 15:42 */@RestControllerpublic class HelloWordController {    @Autowired    UserService userService;    /**     * 取自定义依赖中userService对象的初始化赋值     * @return     */    @GetMapping("/query")    public String query() {        return userService.getName();    }}
  • 启动SpringBoot项目,访问http://localhost:8080/query,取到了来自自定义starter依赖包中的值。
d8e629706ff03d0eeab190f3b1f1a917.png

取到了自定义依赖中的值


作者:杨33,北京互联网公司在职Java开发,专注分享写作干货。欢迎关注我,期待你的点赞评论。

Spring Boot系列知识,下章节内容更加有料。