SpringBoot(二)项目搭建+启动原理

目录

一、项目搭建、入门案例

1、方式1

1)创建一个空的maven工程

2)配置maven 

3) 添加spring boot父工程、spring依赖,web场景开发启动器

3)创建启动类

启动类与启动器区别:

4、启动

5、查看依赖传递

6、开发一个Controller

2、方式2

3、方式3

二、启动原理

1、依赖导入原理

2、springboot 包扫描原理

@SpringBootConfiguration

@EnableAutoConfiguration

@AutoConfigurationPackage ,自动配置包


一、项目搭建、入门案例

1、方式1

1)创建一个空的maven工程

2)配置maven 

3) 添加spring boot父工程、spring依赖,web场景开发启动器

<groupId>org.example</groupId>
<artifactId>springboot01</artifactId>
<version>1.0-SNAPSHOT</version>
​
 <!--添加spring boot父工程-->
<parent>
    <artifactId>spring-boot-starter-parent</artifactId>
    <groupId>org.springframework.boot</groupId>
    <version>2.7.10</version>
</parent>
​
<properties>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
</properties>
​
<dependencies>
     <!--web场景开发启动器,整合spring和springmvc包各种包    选中spring-boot-starter-web快捷键ctrl+shift+alt+u-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

3)创建启动类

新建启动类

Spring Boot的启动类的作用是启动Spring Boot项目,是基于Main方法来运行的。

启动类在启动时会做注解扫描(@Controller、@Service、@Repository......),扫描位置为同包或者子包下的注解,所以启动类的位置应放于包的根下

启动类与启动器区别:

启动类表示项目的启动入口

启动器表示jar包的坐标

必须在包中新建这个类,不能直接放入到java文件夹。 在com.buba下新建自定义名称的类(规范:XXXXApplication),可以是项目上下文路径Application

package com.yka;
​
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
​
/**
 * @ClassName:ApplicationDemo
 * @Auther: YooAo
 * @Description: 主程序类  启动类
 * @Date: 2023/3/31 08:49
 * @Version: v1.0
 */
@SpringBootApplication
public class ApplicationDemo {
    public static void main(String[] args) {
        SpringApplication.run(ApplicationDemo.class,args);
    }
}

4、启动

5、查看依赖传递

 

6、开发一个Controller

@RestController
@RequestMapping("/test")
public class TestController {
​
    @GetMapping("/getTest")
    public String getTest(){
        return "test~~~~~~~";
    }
​
}

端口号默认8080 项目上下文路径默认 ‘’ 其实就是没有

访问测试

2、方式2

在工作中可能会出现必须继承某个项目,如果Spring Boot用了继承就不能继承别的项目了。所以Spring Boot还提供了依赖的方式。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
​
    <groupId>org.example</groupId>
    <artifactId>springboot01</artifactId>
    <version>1.0-SNAPSHOT</version>
​
    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>
​
    <dependencyManagement>
        <dependencies>
 <!--在工作中可能会出现必须继承某个项目,如果Spring Boot用了继承就不能继承别的项目了。所以Spring Boot还提供了依赖的方式。-->
            <dependency>
                <!--spring-boot-dependencies就相当于使用spring-boot-starter-parent父依赖 -->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.7.10</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
​
    <dependencies>
          <!--web场景开发启动器,整合spring和springmvc包各种包    选中spring-boot-starter-web快捷键ctrl+shift+alt+u-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
​
</project>

3、方式3

使用idea自带springBoot项目初始化插件

二、启动原理

1、依赖导入原理

父项目版本控制

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.7.10</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

ctrl+ 点击spring-boot-dependencies 进入 这里管理着springboot中所有依赖的版本,版本控制中心,导入依赖如果不写版本就用这里的版本

spring-boot-starter-web,也就是web启动器,导入和很多web的依赖

2、springboot 包扫描原理

ctrl点击进入@SpringBootApplication注解

@SpringBootConfiguration

@SpringBootConfiguration 上面有一个Configuration表示这是一个配置类

配置类上面有@Component说明也是容器中的一个组件

@EnableAutoConfiguration

@EnableAutoConfiguration 启用自动配置功能 springboot中没有做任何配置,springboot自动帮助我们配置,但是要通过该注解才能生效 @AutoConfigurationPackage // 自动扫描配置类包的注解 @Import(AutoConfigurationImportSelector.class)// 给容器导入一些组件的选择器,导入一些默认配置

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {
    String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";
​
    Class<?>[] exclude() default {};
​
    String[] excludeName() default {};
}
​

@AutoConfigurationPackage ,自动配置包

@Import(AutoConfigurationPackages.Registrar.class) 导入AutoConfigurationPackages.Registrar类 @Import是spring的 底层注解,给容器导入一个组件

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Import({Registrar.class})
public @interface AutoConfigurationPackage {
    String[] basePackages() default {};
​
    Class<?>[] basePackageClasses() default {};
​
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Struts作为MVC 2的Web框架,自推出以来不断受到开发者的追捧,得到用广泛的应用。作为最成功的Web框架,Struts自然拥有众多的优点:  MVC 2模型的使用  功能齐全的标志库(Tag Library)  开放源代码 好了废话少说,进入正题,截止写稿时间struts最新版本是2.3,不过是12月12日发布的(2011年),为了稳定起见,我使用的版本是struts-2.2.3.1本文分为以下几个部分: 一、搭建开发和运行环境 1、到Apache下载Strut包:http://archive.apache.org/dist/struts/ 在这里可以下载到所有版本的struts,点击 ,之后如何操作就不讲了。下载之后解压。这个版本的struts的jar有很多,我们只需添加我们自己需要的就行了,我们先搭建起struts运行最基本的环境,当然jar包就是struts运行时所需的最少的jar包。所需jar如下: 网上有说需要这个又有说不需要这个,需要根据实际情况来定,实在不行就自己一个一个加,先从struts的core包开始,如果缺少jar包启动的时候就会报错,缺哪个加哪个。 2、打开MyEclipse(我用的是6.5)新建Web工程 新建项目名称为struts,选中JAVAEE5.0(这个不是必须的,但是现在都是这个,选一下也好),点击完成。 将准备好的jar包拷贝到lib目录下。 打开web.xml将其修改为如下代码: <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <filter> <filter-name>struts</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter> <filter-mapping> <filter-name>struts</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <login-config> <auth-method>BASIC</auth-method> </login-config> </web-app> 然后在src目录下新建一个struts.xml文件,内容如下: <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <include file="struts-default.xml"/> </struts> 然后在新建一个内容为空的struts.properties文件。 至此项目搭建完毕,然后将其发布。 3、发布项目 在myeclipse里面可以嵌入tomcat,配置外部tomcat然后将项目发布,并运行。访问http://127.0.0.1:8080/struts/,弹出如下界面: 说明运行成功。 、第一个Struts 2.0应用程序——Hello World 下面我们进行臭名昭著的Hello World程序。几乎所有语言的第一个程序都是Hello World。在src目录上右键,新建一个,参数如下: 的内容如下: package com.top.web; import com.opensymphony.xwork2.ActionSupport; public class HelloWorldAction extends ActionSupport { /** * */ private static final long serialVersionUID = 1L; public String execute(){ return SUCCESS; } } 修改struts.xml内容如下: <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <include file="struts-default.xml"/> <package name="" namespace="/" extends="struts-default"> <action name="helloWorld" class="com.top.web.HelloWorldAction"> <result>welcome.jsp</result> </action> </package> </struts> 在webroot目录下新建JSP页面,名字:welcome.jsp,内容如下: <%@ page language="java" pageEncoding="GBK"%> <html> <head> <title>Hello World!</title> </head> <body> Hello World! </body> </html> 目前位置目录结构应该是如下的: 重新发布运行,访问http://127.0.0.1:8080/struts/helloWorld.action出现如下界面,说明项目搭建成功:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值