SpringBoot文件启动类说明+属性赋值+环境切换+热部署

1.SpringBoot

1.1SpringBoot POM.xml文件说明

1.1.1创建项目

图片

1.1.2 parent标签作用

作用:parent当中有一个大型的配置文件,在其中管理了springBoot与第三方整合的

所有(主流的)的jar包的版本,来解决jar包版本的冲突问题.几乎实现了零整合.(定义的作用)

误区:springBoot中的parent不能直接依赖jar包文件.需要通过自己的依赖项,导入需要的jar包.

 <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
         <version>2.2.6.RELEASE</version>
         <relativePath/> <!-- lookup parent from repository -->
     </parent>

1.1.3 dependencies

说明: 在parent标签的基础之上.导入了dependencie之后会根据parent中指定的版本添加jar包文件.并且会自动的导入相关的依赖jar包.

 <dependencies>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
         </dependency><dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>
             <scope>test</scope>
             <exclusions>
                 <exclusion>
                     <groupId>org.junit.vintage</groupId>
                     <artifactId>junit-vintage-engine</artifactId>
                 </exclusion>
             </exclusions>
         </dependency>
     </dependencies>

1.1.3maven插件说明

 <!--build maven在工作时需要执行的操作.  -->
     <build>
         <!--插件操作  -->
         <plugins>
             <!--springBoot中负责项目打包/部署/发布等maven操作  -->
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
             </plugin>
         </plugins>
     </build>

1.1.4项目发布

说明:通过maven工具中的maven-install指令,可以将maven项目打包.在target目录中会生成相对应的jar包文件.

打包显示信息:![图片](https://uploader.shimo.im/f/XfEvUw7WgtUMCIAg.png!thumbnail)

打包成功之后效果:

图片

运行jar包项目:

1.进入dos命令窗口

图片

2.执行命令:

 java -jar  xxxxxx.jar
![图片](https://uploader.shimo.im/f/HvE6mJxr5D8MKsSG.png!thumbnail)

3.用户访问测试

图片

1.1.5打包步骤

1.将项目clean

重新编译,生成.class文件

图片

2.将项目打包

								![图片](https://uploader.shimo.im/f/1Kb8jLM0FJ4BoqU6.png!thumbnail)

1.2SpringBoot主启动类的说明

1.2.1SpringBoot原理分析

问题:

  1. 为什么SpringBoot项目启动之后,可以自动的运行tomcat服务器?

  2. SpringBoot启动时,如何加载springMVC的配置的,在哪里配置?

1.2.2"开箱即用"

说明:在SpringBoot程序中,如果需要添加某些功能,则只需要添加jar包文件即可,无需经过复杂的配置.直接可以使用.

1.添加jar包文件

 <dependency>
             <groupId>org.springframework.boot</groupId>
             <!--spring-boot-starter  spring的启动项中自动的完成了项目整合 自动配置 -->
             <artifactId>spring-boot-starter-web</artifactId>
         </dependency>


2.查看主启动类

 当程序启动时,会执行主启动类的方法.
 @SpringBootApplication
 public class SpringbootDemo1Application {   //标识
     
     //main方法 是java程序的唯一入口.
     public static void main(String[] args) {
         //1.当程序启动时,通过maven方法执行主启动的类加载.
         SpringApplication.run(SpringbootDemo1Application.class, args);
     }
 ​
 }

3.主启动类注解的说明
元注解:修饰注解的注解.

 @Target(ElementType.TYPE)   //元注解   标识注解的作用对象  类
 @Retention(RetentionPolicy.RUNTIME) //标识注解的生命周期 运行期有效
 @Documented //相关文档的说明
 @Inherited  //该注解可以被继承.
 @SpringBootConfiguration    springBoot就是一个配置类,可以扫描项目中所有的其他的配置类文件.  配置类扫描
 @EnableAutoConfiguration    //开启自动的配置项  
     
 @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
         @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
 //springBoot启动时,会剔除某些filter之后启动运行.
 public @interface SpringBootApplication {...}

4.自动配置注解

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage   //自动配置的包扫描路径
@Import(AutoConfigurationImportSelector.class)//自动配置的选择器
根据jar包实例化对象.  自动完成加载.
public @interface EnableAutoConfiguration {....}
   以后写代码,包路径至少应该在主启动的同包及子包中.
   AutoConfigurationImportSelector.class,该类在SpringBoot程序启动时,会自动的加载POM.xml文件中SpringBoot自动配置的jar包文件.并且运行.

1.3SpringBoot为属性赋值

1.3.1需求分析

如果将类中的属性直接赋值,则后台修改维护时不方便. 

最好的方式应该通过配置文件的方法动态赋值.
@RestController	//标识返回值是JSON字符串
public class JDBCController {
	
	private String jdbcName = "mysql";
	private String jdbcUrl = "127.0.0.1:3306";
}

1.3.2SpringBoot-pro文件

1.修改字符集编码

图片

2.编辑pro文件

#字符集编码问题, UTF-8编码只对当前文件有效的. 文件可以写中文
#但是springBoot程序在读取pro文件时,默认采用的字符集编码格式为ISO-8859-1.如果该配置文件编辑中文则
#数据读取时必然乱码!!!  所以写配置文件时,不要有中文.
#语法:  1.数据结构  K-V结构    2.pro文件本身就是字符串所以无需添加""号    3.编辑时最好不要加多余的空格
server.port=8090
server.servlet.context-path=/     #默认的发布路径

1.3.3SpringBoot-YML文件说明

#语法说明  
  #1.数据结构  k-v结构  k:(空格)v
  #2.有层级关系 相同的层级可以缩进
  #3.YML配置文件本身是utf-8格式,并且程序读取时也是utf-8编码 不会乱码
server:
  port: 8090
  servlet:
    context-path: /jt

1.3.4利用@Value为属性赋值

1).编辑YML配置文件
#语法说明  
  #1.数据结构  k-v结构  k:(空格)v
  #2.有层级关系 相同的层级可以缩进
  #3.YML配置文件本身是utf-8格式,并且程序读取时也是utf-8编码 不会乱码
server:
  port: 8090
  servlet:
    context-path: /
#为属性赋值
jdbc:
  jdbcName: mysql数据库
  jdbcUrl:  127.0.0.1:3306
2).编辑JDBCController
@RestController	//标识返回值是JSON字符串
public class JDBCController {
	
	/**
	 * 1.利用@Value注解 为属性赋值   spel表达式
	 * 原理: 
	 * 	1.Spring程序启动时,会加载YML配置文件,解析配置文件中的k-v格式,之后
	 * 保存到Spring所维护的map集合中.
	 *  2.当Spring程序解析RestController时,会实例化当前对象,需要为其中的数据利用
	 *  @value注解完成赋值操作.
	 *  3.spring程序根据spel表达式的语法在map集合中根据key查找数据,
	 *    	如果查询没有问题,则可以直接赋值.
	 * 		如果查询不到数据,则spring容器启动报错
	 */
	@Value("${jdbc.jdbcName}")
	private String jdbcName;	// = "mysql";
	@Value("${jdbc.jdbcUrl}")
	private String jdbcUrl;		// = "127.0.0.1:3306";
	
	
	@RequestMapping("/getJDBC")
	public String getMsg() {
		
		return jdbcName + ":" + jdbcUrl;
	}
	
}
3).测试效果
				![图片](https://uploader.shimo.im/f/wwk9YmfcNdktvDNR.png!thumbnail)

1.3.5批量为属性赋值

1.3.5.1添加jar包文件

<!--添加属性注入依赖 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-configuration-processor</artifactId>
			<optional>true</optional>
		</dependency>

1.3.5.2添加注解

@RestController	//标识返回值是JSON字符串
@ConfigurationProperties(prefix="jdbc2") //程序自动的扫描前缀为jdbc2的属性
public class JDBCController2 {
	
	/**
	 *    批量为属性赋值
	 *  jdbcName: mysql数据库
  		jdbcUrl:  127.0.0.1:3306
  	      
  	      要求:
  	      1.YML配置文件中属性的名称应该与类中属性的名称一致.
  	      2.需要配合SET方法完成赋值操作.
	 */
	private String jdbcName;	// = "mysql";
	private String jdbcUrl;		// = "127.0.0.1:3306";
	
	
	@RequestMapping("/getJDBC2")
	public String getMsg() {
		
		return jdbcName + ":" + jdbcUrl;
	}

	public String getJdbcName() {
		return jdbcName;
	}

	public void setJdbcName(String jdbcName) {
		this.jdbcName = jdbcName;
	}

	public String getJdbcUrl() {
		return jdbcUrl;
	}

	public void setJdbcUrl(String jdbcUrl) {
		this.jdbcUrl = jdbcUrl;
	}
	
	
	
}

1.4SpringBoot指定配置文件为属性赋值

1.4.1指定配置文件为属性赋值

jdbc3.jdbcName=mysqlPro
jdbc3.jdbcUrl=127.0.0.1:3306

1.4.2编辑JDBCController

	添加注解,加载指定的配置文件
@RestController	//标识返回值是JSON字符串
@PropertySource("classpath:/properties/jdbc.properties")
//加载指定的配置文件,之后交给Spring容器统一管理
public class JDBCController3 {
	
	/**
	 * 赋值操作 2中   1.@value方式赋值   2.批量赋值
	 *指定配置文件
	 */
	@Value("${jdbc3.jdbcName}")
	private String jdbcName;
	@Value("${jdbc3.jdbcUrl}")
	private String jdbcUrl;
	
	
	@RequestMapping("/getJDBC3")
	public String getMsg() {
		
		return jdbcName + ":" + jdbcUrl;
	}
}

1.5环境切换问题

1.5.1业务需求

开发环境和生产环境IP地址和端口号可能都不相同.如果每次都要频繁的修改配置文件,导出开发特别繁琐.

1.5.2配置要求

要求:

1.配置项的个数必须相同的.

2.使用"---"实现环境分割

3.为每一个环境,设定名称
spring:
  profiles: dev    #设定开发环境
4.设定默认环境名称
 #指定默认的环境配置
 spring:
   profiles:
     active: dev
 ​
 ---
 #语法说明  
   #1.数据结构  k-v结构  k:(空格)v
   #2.有层级关系 相同的层级可以缩进
   #3.YML配置文件本身是utf-8格式,并且程序读取时也是utf-8编码 不会乱码
   
 spring:
   profiles: prod      #我是生产环境
 ​
 server:
   port: 8090
   servlet:
     context-path: /   #项目的发布路径
 ​
 #为属性赋值
 jdbc:
   jdbcName: "@value方式赋值"
   jdbcUrl:  127.0.0.1:3306
   
 jdbc2:
   jdbcName: 批量赋值
   jdbcUrl:  127.0.0.1:3306---    #分割线
 ​
 spring:
   profiles: dev    #设定开发环境
 server:
   port: 8095
   servlet:
     context-path: /jt
 ​
 #为属性赋值
 jdbc:
   jdbcName: 我是开发环境!!!
   jdbcUrl:  127.0.0.1:3306
   
 jdbc2:
   jdbcName: 批量赋值
   jdbcUrl:  127.0.0.1:3306

1.6程序热部署

说明:添加热部署的jar包文件

<!--支持热部署 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
		</dependency>

1.7LOMBOK插件配置

1.7.1导入jar包文件

<!--引入插件lombok 自动的set/get/构造方法插件  -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

1.7.2校验lombok插件是否安装成功

说明:如果当前STS根目录中 如果已经包含了lombok.jar包文件,则表示安装成功!!!

图片

1.7.3LOMBOK使用

@Data	//生成get/set/toString/equals
@Accessors(chain=true)	//表示链式加载  重写set方法,将对象返回
@NoArgsConstructor		//添加无参构造   为以后框架的使用做准备
@AllArgsConstructor		//全部参数的构造方法.
public class User {
	private Integer id;
	private String name;
	private Integer age;
	private String sex;
	
	/**
	 * 重写set方法,实现对象的连续调用
	 */
	/*public User setId(Integer id) {
		this.id = id;
		return this;
	}
	
	public User setName(String name) {
		this.name = name;
		return this;
	}*/
	
	
}

1.7.4面试题

问题:lombok在本地使用时,需要完成安装,如果项目xxx.jar在服务器Linux系统中运行时,问:是否需要重新安装lombok插件???

答: 不需要!!!

说明: .jar包文件中包含不是.java文件信息,而是.class文件,程序将.java文件编译为.class文件时,会调用lombok插件.动态的添加指定的get/set/toString等方法.

所以,程序在Linux系统中运行时,不需要再次安装.

总结:lombok插件在程序编译期有效.

图片

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值