• 今日立春,SpringBoot! 简单springboot项目搭建开始。


    准备新建springboot项目

    jar 文件类型,jdk版本为8,启用lombok和开发测试工具,

    生成的pom文件里,增加maven的版本信息否则pom第一行报错

    <properties>
            <java.version>1.8</java.version>
             <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>   
        </properties>

    开始:

    1,新建 domain 类 User,

    // 安装lombok后,启用lombok注解
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    @ToString
    public class User {
    
        private int id;
        private String name;
        private String address;
        
    }

    2,新建config类,并且用@Configuration,标识为一个配置类。且实例化一个User

    @Configuration
    public class UserConfig {
    
        @Bean
        public User user() {
            return new User(1,"xiaoming","beijing");
        }
    }

    3. 运行测试类

    @SpringBootTest
    class DemoApplicationTests {
    
        @Autowired
        private User user;
        
        @Test
        void contextLoads() {
            System.out.println(user);
        }
    
    }

    4、结果

    2021-02-03 09:59:20.443  INFO 5644 --- [           main] cn.taotao.DemoApplicationTests           : Started DemoApplicationTests in 2.97 seconds (JVM running for 5.125)
    User(id=1, name=xiaoming, address=beijing)
    2021-02-03 09:59:20.829  INFO 5644 --- [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'

     5、报错信息,

    2021-02-03 11:57:09.301 ERROR 9872 --- [           main] o.s.test.context.TestContextManager      : Caught exception while allowing TestExecutionListener [org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener@4de4b452] to prepare test instance [com.example.demo.DemoApplicationTests@2d746ce4]
    
    org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'com.example.demo.DemoApplicationTests': Unsatisfied dependency expressed through field 'user'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.example.domain.User' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:643) ~[spring-beans-5.3.2.jar:5.3.2]
    提示:expected at least 1 bean which qualifies as autowire candidate. 至少有一个bean被实例化

    无法实例化bean,原因往往目录结构不对,导致不自动扫描

    自动扫描的默认配置是,主程序application入口,必须在各个包之上,各个子包不是继承自入口包,需要在application的注解文件中加入scanBasePackages的注解

    即使是Test的测试程序,也必须在application的入口处,加入scanbasepackages的注解

    package com.example.demo;   //这个入口在demo包下,但是配置文件和实体bean在example下

    //
    指明scan哪个父包,否则不会实例化差异包下的bean,甚至连Test也运行不正常 @SpringBootApplication(scanBasePackages = "com.example") public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }

    或者,用@ComponentScan 注解,扫描父包,默认扫描执行入口包  及其子包。

    @SpringBootApplication
    @ComponentScan(basePackages = "com.example")
    public class DemoApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(DemoApplication.class, args);
        }
    
    }

    另外还有常用的注解;

    @Import (value ={configA.class,configB.class})  ,引入其他的配置文件

    @Qulifier ("user1")  合格者,当注入的bean不是一个的时候,用来标识唯一。

  • 相关阅读:
    wireshark1
    攻防世界Crypto高手进阶区部分Writeup
    flag_in_your_hand1
    扩展GridView之添加单选列
    C#关于日期月天数和一年有多少周及某年某周时间段的计算
    C# 开发和使用中的32个技巧
    TSQL编程的全局变量
    计算当前月底天数
    存储过程编写经验和优化措施
    ASP.NET 程序中常用的三十三种代码
  • 原文地址:https://www.cnblogs.com/sdgtxuyong/p/14365518.html
Copyright © 2020-2023  润新知