分布式架构项目学习02

1.springboot的属性动态赋值

当程序中出现了频繁变化的数据时,当手动修改时需要重新编译打包,所以要为属性动态赋值。

1.1一般的赋值情况

@RestController
public class Controller{
	private String host = "192.168.64.3";
	private Integer port = 6380;
	
	@RequestMapping("getMsg")
	public String getMsg(){
		
		return host+":"+port;
	}
}

当项目编译后,若想要修改host和port变量的值,需要修改源文件.java,然后重新编译。这样造成程序的耦合度过高。

1.2 动态赋值

1.2.1 关于yml文件的说明

# yml文件语法
	#1.key:(空格)value
	#2.key与key之间有层级的缩进关系
server:
  port: 8090

#属性赋值操作,编辑属性时注意前缀,只要springboot启动该数据就会被写入到内存中 key-value格式
redis:
  host: 192.168.126.129
  port: 4589
import org.springframework.beans.factory.annotation.Value;
@RestController
public class Controller{
	@Value("${redis.host}") //springel表达式 简称spel表达式
	private String host;
	@Value("${redis.port}")
	private Integer port;
	
	@RequestMapping("getMsg")
	public String getMsg(){
		
		return host+":"+port;
	}
}

@Value注解是spring框架下的。

1.2.2 与yml配置文件相对应的另一种配置文件properties

在yml文件中,配置信息中间以冒号分开,并且具有严格的层级缩进关系。properties配置文件中则不同。对比上面的yml文件。

server.port=8090
redis.host=192.168.126.129
redis.port=4589

可以看到不同层级用点号来表示,不是冒号。取值也用=号。

2.@ResponseBody注解

该注解加在类上面,表示类中的所有方法均被该注解修饰。单独加在某一个方法上只对该方法生效。

2.1作用1:将对象转化为JSON

1.当对象为List集合对象时,返回给前端的是json对象数组,形如[{k:v},{k:v},{k:v}...]

例如

	@RequestMapping("getMsg")
	@ResponseBody
	public List<user> getMsg(){
		List<user> list = .....;
		return  list;
	}

2.当方法返回值是一个简单对象时,返回给前端的是一个json对象,形如:在这里插入图片描述
3.当集合中的泛型不是莫一自定义类时,例如user类等,是包装类或者是String类时,返回的json数组。

4.总结:json有三种格式,http://json.cn/wiki.html,当方法的返回值不同时,@ResponseBody会将返回值转换为不同的json格式

2.2作用2:如果返回值是String类型,则向前端返回字符串本身。

例如

	@RequestMapping("getMsg")
	@ResponseBody
	public String getMsg(){
		return  "hello";
	}

2.3客户端发起ajax请求时

作用3:一般客户端发起ajax请求时,采用该注解返回数据,至于是返回json,还是String字符串,都是业务逻辑的要求。mvc中有一个重要的组件叫做视图解析器。视图解析器是为了动态的拼接页面的前缀和后缀。
如果加了@ResponseBody注解就不会执行视图解析器的操作。

3.使用properties配置文件给属性动态赋值。

@RestController
//动态的导入properties配置文件,交给spring容器进行加载。
@PropertySource("classpath:/。。。") 
/**
/ 代表根目录,即resources目录,后面写配置文件所在的位置即可。
*/
public class Controller{
	
	@Value("${redis.host}")
	private String host;
	@Value("${redis.port}")
	private Integer port;
	
	@RequestMapping("getMsg")
	public String getMsg(){
		
		return host+":"+port;
	}
}

4. 总结yml和properties两种配置文件的不同

4. 1 书写格式:

yml:
1.yml之间以“:”分隔
2.key与value之间要有一个空格,在IDEA开发工具中,一定要检查是否有空格。正确的形式如下
在这里插入图片描述
这个时候颜色是橘黄色的,若中间无空格,则是错误的形式如下:
在这里插入图片描述
可以看见颜色变为白色。
3.yml中的key是有严格的层级的缩进关系的。由其要注意前面的缩进,一般是一个tab,但是有时候会不准,所以缩进的距离手动空格,将下一级放在上一级的第三个字母下就可以。
举一个简单的例子:
在这里插入图片描述
图中有三个key-value
分别是:
server.port=8095
server.servlet.context-path=/
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
这样可以清楚的理解层级结构

properties
在这里插入图片描述
通过图片一目了然。对比不同即可。

4.2 两种配置文件的使用

yml: 该配置文件中属性,可以直接使用。但是一般yml文件中存放的都是系统级别的数据,一般自定义的数据都放在properties配置文件中。

properties:该配置文件中的属性需要在类上加上特殊的注解,才可以使用配置文件中的属性。
在这里插入图片描述

yml文件不同加@PropertySource即可为属性动态赋值。

在这里插入图片描述
properties文件需要加@PropertySource注解才能为属性动态赋值。

5.环境的切换

业务说明:由于开发时都是链接公司自己的数据库/服务器等.把这个环境称之为"开发环境."
当开发完成之后需要进行上线部署,则需要链接"生产环境"
如果频繁的切换环境,则导致项目由于修改错误,导致问题的发生.
项目优化: 能否提供一种策略.简化上述操作的开发过程.

#第一份配置文件,用来指定默认的环境标识
spring:
  profiles:
    active: prod

---

#指定环境的名称
spring:
  profiles: dev
server:
  port: 8090

redis:
  host: 192.168.126.129
  port: 6379

# 1.需要将环境一分为二
---
spring:
  profiles:  prod
server:
  port: 9000

redis:
  host: 111.111.111.111
  port: 7000

这是一份yml配置文件,通过图中的三个-将配置文件分为多份,图中切两刀,将一份配置文件分为了三份。第一刀将环境分为两份。在这里插入图片描述
在这里插入图片描述
需要为每一份环境指定名称:如图使用spring.profiles来制定环境的名称。
环境有了名称后,还需要在最前面指定应该使用哪一份环境.
在这里插入图片描述
如图使用spring.profiles.active来指定使用哪一份环境。

6 lombok插件的使用

6.1 插件下载

在IDEA中File->Settings->Plugins->Marketplace中搜索lombok下载并重启Idea。

6.2 引入jar包

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

6.3 lombok注解的使用

在这里插入图片描述
@Accessors(chain = true) //链式加载
传统的对象中的属性赋值的方法比较啰嗦。
set方法是这样写的:

public void setId(Integer Id){
	this.Id = Id;
}

返回值为void,
user.setId();
user.setName();
需要写多行代码。
使用@Accessors(chain = true) 注解后,会生成传统set方法的重载方法。如下:

public User SetId(Integer Id){
	this.Id = Id;
	return this;
}

该set方法返回当前对象。所以可以实现一行代码为多个属性同时赋值:
user.setId(2).setName(“zzz”);

6.4 lombok的问题

如果需要使用lombok工具就必须提前安装插件,如果在上线的时候LInux系统必须要提前安装lombok插件吗?
不需要安装。
原因:lombok在编译期有效,将.java文件编译为.class文件是,lombok会动态的添加get/set/toString等方法。添加到.class文件中
Linux上线部署时运行的.jar文件。而jar包中包含的文件都是.class文件。
指令是 java - jar 文件名.jar
编译好后,可以在target目录中看见编译好后的.class文件,如图:
在这里插入图片描述
可以看见@Data等相关注解都没有了。证明lombok注解只在编译期有效,生成相应的方法后,注解就没有了。

7 springboot整合mybatis

7.1导入jar包

		<!--引入数据库驱动 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		
		<!--springBoot数据库连接  -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>
		
		<!--spring整合mybatis  暂时  -->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.3.2</version>
		</dependency>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郑清伟zqw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值