1、资料内容仅供您学习参考,如有不当之处,请联系改正或者删除。 SpringBoot笔记 创立项目 获取配置文件中的属性值 修改配置文件名和文件路径( 可指定多个文件或者路径) 1. 经过配置方式 2. 经过编码方式( 用这种比较好些) 上图是两种方式, 上面一种是加载一个文件, 下面一种是加载多个文件 3. 注入集合 要注意的是: 在注入集合的时候, 代码中的集合一定要有get和set方法, 而且集合名要和除前缀之外的属性名相同。在初始化的时候, spring boot就会去上述两种情况加载的文件中去找前缀是ds的
2、属性。 下面的@ConfigurationProperties注解中有两个属性, 一个是prefix即前缀, 一个是locations即本地文件路径。如果只写前缀, 那么prefix=能够省略, 此时会从已加载的配置文件中去找对应的属性, 如果指定locations的话, prefix=也不能省略, 此时会从locations指定的文件中去找对应的属性。 不同的环境读取不同的配置文件 Springboot自动装配 非自动装配示例如下 按条件自动装配示例如下 特别注意: @Conditional注
3、解能够用在方法上, 也能够用在类上, 如果用在方法上, 则表示只对方法自动装配, 如果用在类上, 则表示对该类下所有方法都进行自动装配, 如下面的@Conditional注解就表示当Utf8Condition中的方法返回true时对该类中的所有方法都进行自动装配。 因为@Conditional注解接收的参数是一个数组, 一次能够传多个Condition, 下图所示就表示当Utf8Condition和GbkCondition都返回true时才对该类下的所有方法进行自动装配: Spring Boot还给我们提供了一些很好用的按条件自动装配的类, 在org.spri
4、ngframework.boot.autoconfigure.cloud包下面, 能够自行研究下, 下面演示两个常见的。 如@ConditionalOnProperty是与属性配合使用的, @ConditionalOnClass与类配合使用, @ConditionalOnBean与bean配合使用, 示例如下 默认配置文件中加上如下属性: 运行即可 再如 再如 两个runnable已全部加载 再如 或者 Spring boot实现异步处理 Spring boot自动装配没有加注解的
5、bean Springboot事件监听 流程: 1. 自定义事件, 一般是继承ApplicationEvent抽象类; 2. 定义事件监听器, 有多种实现方式, 而且对同一个事件可创立多个监听器; 3. 发布事件。 实现1: 实现2: 实现3: 具体实例( 用户注册, 插入数据库并邮件通知) : 上述程序启动之后再浏览器中输入如下地址访问, 就会在控制台打印出相关信息: http://localhost
6、8080/register?name=liuqian&password=123 Springboot JDBC 或者 spring.datasource.type属性能够用来指定数据源, 如下图 事物: 要注意: 能够在注解后面的括号中设置事物, 自行学习 或者 Springboot AOP( 面向切面) Aop用途: 日志记录、 权限处理、 性能统计、 监控、 事务处理、 异常处理等。 首先在测试启动时候遇到一个错误, 报错如下: 错误 解决方案如下: 方法一:
7、@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class}) 具体实现: 或者 Springboot– redis Springboot Starter – redis 有两种方式: 一种时直接在项目中引入Jedis依赖包, 直接使用Jedis, 另一种时引入spring-boot-starter-data-redis。下面的示例时直接使用Jedis。 下图中红色框里的内容时在使用Jedis
8、连接成功redis之后进行的密码验证, 如果设置了redis无需密码登陆, 则不需要在代码中设置。 Springboot 日志 Springboot 监控和度量 自定义health 可自定义配置info 输出效果 除了上述信息之外, 还能够将监控信息输出到jmx( 如jvisualvm.exe等) 或者redis。 对于监控测量更详细的信息能够参照官方说明文档 Springboot 测试 特别注意: 上述测试类中为啥要加classes=XXX.class的原因: 因为Spr
9、ingBoot默认扫描启动类所在包以及子包中所有bean的, 因此在测试类中需要加上。 如果某个bean只有测试路径下有, 而项目路径下没有, 则还需要把测试路径下的该bean加到classes后面去。 测试bean 想要让测试包中的bean生效, 还需要手动加入到容器中 测试配置环境1( 使用程序包中的环境类MyConfig来测试) 测试配置环境2( 直接使用spring的Environment, 前提是如果配置信息不在默认配置文件内的话, 必须先在程序包中将配置文件引入) 如果在测试之前要进行一些变量或者对象的初始化时
10、 就用@Before注解 测试Controller方式1( 用这种方式测试的话会加载整个spring容器) 测试Controller方式2( 这种方式就是普通SpringMvc中Controller的测试方式, 不会加载整个spring容器, 因此有必要配置自动扫描的包) Springboot 整合mybatis Mybatis逆向工程 Springboot 构建微服务 所谓为服务, 就是将一个项目按照功能模块拆分成多个功能单元, 每个功能单元都能够自行选用不同的技术来完成
11、这样做方便并行开发、 测试以及维护。 下图时产品微服务, 使用spring boot开发 下图时调用为服务接口的示例 Springboot 服务的注册与发现 1. 注册方( 服务提供方) 服务注册方( 提供接口) 需要引的jar包( 一定要注意版本不能太高, 否则会报错) 服务调用方需要引用的jar包( 一定要注意版本不能太高且与服务注册放一致, 否则会报错) 常见的注册中心: zookeeper, consul, etcd, redis 流程: 1. 服务器提供方去要在启动服务的时候, 把服务器的信息( ip, po
12、rt) 注册到注册中心( 在示例中使用的时zookeeper) 。2. 下载zookeeper 在Windows下配置zookeeper 配置地址: ( 特别要注意, 再服务发现的程序配置文件中也要配置该地址) 用PowerShell查看节点 2. 发现方( 服务调用方) ( 如果是使用springbooot的话能够使用如下配置, 这个配置也可直接在代码中写死) 普通类中调用服务( 下面是测试的main方法, 实际项目中能够用在任何方法中, 可进行封装) 在spring boot类中调用一样的。 3
13、 当有多个注册方的时候, 多个注册方的名称能够一样, 也能够不一样, 如果名称一样, 则调用方可经过ip和端口号来判断是哪个注册方, 如果名称不一样, 则调用方可直接经过名称来发现注册方。 3.1 多个注册方名称不一致的情况 注册方一: 注册方二: 调用方: 3.2 多个注册方名称相同的情况: 这种情况一般是将同一服务程序跑在不同服务器上, 可设置相同或者不同的端口号, 用来做负载均衡。 注册方一: 注册方二: 调用方( 实现简单的负载均衡) : 负载均衡类 调用类
14、 Springboot 服务的打包和部署 1. 打成jar包并部署: 双击package, 将项目打包( 要注意: 这种方式需要在服务器上安装jdk环境) 在项目的target目录下找到jar包复制出来, 并在要部署程序的服务器上新建一个目录, 将jar包放在里面 用命令 java -jar + jar包路径来启动程序, 如果想指定spring boot的jar包运行的jvm内存, 可用命令 java -Xms10m -Xmx200m -jar xxx.jar。如果采用服务方式启动, 经过自定义spring boot脚本并使用JAVA_OPTS=-Xmx=16m -Xmx=48m 2. 打成war包并发布 3. 打包成可执行文件并发布






