01构建第一个SpringBoot工程

第一篇:构建第一个SpringBoot工程

创建项目

  1. 创建工程:Idea-> new Project ->Spring Initializr ->填写group、artifact ->钩上web(开启web功能)->点下一步就行了
  2. maven项目依赖spring-boot-starter-web不仅包含spring-boot-starter,还自动开启了web功能
  3. 使用@RestController注解控制器
  4. 使用@RequestMapping("/")注解路由

启动springboot

  1. cd到项目主目录
  2. 清理target: mvn clean
  3. 打包命令: mvn package
  • 编译报错:No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
  • 原因是maven使用jdk编译,ide使用jre编译
  • 解决办法:
<!-- 在pom.xml中添加配置,让Maven使用jdk编译 -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
    </configuration>
</plugin>
  • 参考:https://www.cnblogs.com/zienzir/p/9318236.html
  1. 启动命令:mvn spring-boot:run
  2. jar包方式启动,cd 到target目录,java -jar 项目.jar

CommandLineRunner执行定时任务

  1. CommandLineRunner接口主要用于实现在应用初始化后,去执行一段代码块逻辑,这段初始化代码在整个应用生命周期内只会执行一次。
  2. 用法1:和@Component注解一起使用
@Component
public class ApplicationStartupRunner implements CommandLineRunner {
    protected final Log logger = LogFactory.getLog(getClass());
 
    @Override
    public void run(String... args) throws Exception {
        logger.info("ApplicationStartupRunner run method Started !!");
    }
}
  1. 用法2:和@SpringBootApplication注解一起使用
@SpringBootApplication
public class SpringBootWebApplication extends SpringBootServletInitializer implements CommandLineRunner {
 
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(SpringBootWebApplication.class);
    }
    public static void main(String[] args) throws Exception {
        SpringApplication.run(SpringBootWebApplication.class, args);
    }
    @Override
    public void run(String... args) throws Exception {
        logger.info("Application Started !!");
    }
}
  1. 使用3:声明一个实现了CommandLineRunner接口的Bean
public class ApplicationStartupRunner implements CommandLineRunner {
    protected final Log logger = LogFactory.getLog(getClass());
    @Override
    public void run(String... args) throws Exception {
        logger.info("Application Started !!");
    }
}
  1. 参考:https://www.cnblogs.com/chenpi/p/9696310.html

springboot注入的bean

  1. 代码如下
// 下面的代码,在项目启动时,会执行,
// 打印启动时加载的bean
@Bean
public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
    // 下面使用的是lambda表达式,编译器根据方法体推测,返回一个CommandLineRunner对象
    return args -> {
        System.out.println("Let's inspect the beans provided by Spring Boot:");
        String[] beanNames = ctx.getBeanDefinitionNames();
        Arrays.sort(beanNames);
        for (String beanName : beanNames) {
            System.out.println(beanName);
        }
    };
}

单元测试,可以直接测试web项目

  1. 通过@RunWith() @SpringBootTest开启注解
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class FirstProgramApplicationTests {
    @Test
    public void contextLoads() {
    }
    // 获取服务端口
    @LocalServerPort
    private int port;
    private URL base;
    // 自动注入一个TestRestTemplate对象
    @Autowired
    private TestRestTemplate template;
    // 执行测试之前执行
    @Before
    public void setUp() throws Exception {
        this.base = new URL("http://localhost:" + port + "/");
    }
    // 执行测试
    @Test
    public void getHello() throws Exception {
        ResponseEntity<String> response = template.getForEntity(base.toString(),
                String.class);
        assertThat(response.getBody(), equalTo("hello 第一个项目做好了"));
    }
}
  1. 报错:Could not resolve placeholder 'local.server.port' in value "${local.server.port}
  • 在配置文件中添加:local.server.port=8090
  1. 报错:No qualifying bean of type 'org.springframework.boot.test.web.client.TestRestTemplate' available
  • 解决:
将头部的注解修改 
@RunWith(SpringRunner.class) 
@SpringBootTest 
改为: 
@RunWith(SpringRunner.class) 
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) 
  • 参考:https://blog.csdn.net/mxj588love/article/details/78604236

参考

  • SpringBoot非官方教程 | 第一篇:构建第一个SpringBoot工程 https://blog.csdn.net/forezp/article/details/70341651
  • Spring boot CommandLineRunner接口使用例子 https://www.cnblogs.com/chenpi/p/9696310.html

转载于:https://www.cnblogs.com/wang7/p/10775736.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大学生参加学科竞赛有着诸多好处,不仅有助于个人综合素质的提升,还能为未来职业发展奠定良好基础。以下是一些分析: 首先,学科竞赛是提高专业知识和技能水平的有效途径。通过参与竞赛,学生不仅能够深入学习相关专业知识,还能够接触到最新的科研成果和技术发展趋势。这有助于拓展学生的学科视野,使其对专业领域有更深刻的理解。在竞赛过程中,学生通常需要解决实际问题,这锻炼了他们独立思考和解决问题的能力。 其次,学科竞赛培养了学生的团队合作精神。许多竞赛项目需要团队协作来完成,这促使学生学会有效地与他人合作、协调分工。在团队合作中,学生们能够学到如何有效沟通、共同制定目标和分工合作,这对于日后进入职场具有重要意义。 此外,学科竞赛是提高学生综合能力的一种途径。竞赛项目通常会涉及到理论知识、实际操作和创新思维等多个方面,要求参赛者具备全面的素质。在竞赛过程中,学生不仅需要展现自己的专业知识,还需要具备创新意识和解决问题的能力。这种全面的综合能力培养对于未来从事各类职业都具有积极作用。 此外,学科竞赛可以为学生提供展示自我、树立信心的机会。通过比赛的舞台,学生有机会展现自己在专业领域的优势,得到他人的认可和赞誉。这对于培养学生的自信心和自我价值感非常重要,有助于他们更加积极主动地投入学习和未来的职业生涯。 最后,学科竞赛对于个人职业发展具有积极的助推作用。在竞赛中脱颖而出的学生通常能够引起企业、研究机构等用人单位的关注。获得竞赛奖项不仅可以作为个人履历的亮点,还可以为进入理想的工作岗位提供有力的支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值