springboot使用注解添加组件

 1、配置类**@Configuration**------>Spring配置文件2、使用**@Bean**给容器中添加组件 /***@Configuration:指明当前类是一个配置类;就是来替代之前的Spring配置文件**在配置文件中用<bean><bean/>标签添加组件**/@ConfigurationpublicclassMyAppConfig{//将方法的返回值添加到容器中;容器中这个组件默认的id就是方法名@BeanpublicHelloServicehelloService02(){System.out.println("配置类@Bean给容器中添加组件了...");returnnewHelloService();}} ...

springboot中jpa+lombok

1.依赖<!--jpa相关--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency>yml配置文件spring:datasource:url:jdbc:mysql://127.0.0.1:3306/wxdd?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8&useSSL=falsedriver-class-name:com.mysql.cj.jdbc.Driverus...
代码星球 代码星球·2020-04-02

spring 集成 shiro安全框架

基于xml配置文件集成 1.web.xml文件<!--配置Shiro安全过滤器--><filter><filter-name>shiroFilter</filter-name><!--此类由spring-web提供--><filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class><init-param><!--这个参数名在DelegatingFilterProxy中定义--><param-name>targetBeanName</param-name><!--这个值在spring-shiro.xml配置文件中定义--><param-value>shiroFilterFactory</param-value></init-param></filter><filter-mapping&...

SpringBoot中如何使用jpa和jpa的相关知识总结

jpa常用的注解: 注解解释@Entity声明类为实体或表。@Table声明表名。@Basic指定非约束明确的各个字段。@Embedded指定类或它的值是一个可嵌入的类的实例的实体的属性。@Id指定的类的属性,用于识别(一个表中的主键)。@GeneratedValue指定如何标识属性可以被初始化,例如自动、手动、或从序列表中获得的值。@Transient指定的属性,它是不持久的,即:该值永远不会存储在数据库中。@Column指定持久属性栏属性。@SequenceGenerator指定在@GeneratedValue注解中指定的属性的值。它创建了一个序列。@TableGenerator指定在@GeneratedValue批注指定属性的值发生器。它创造了的值生成的表。@AccessType这种类型的注释用于设置访问类型。如果设置@AccessType(FIELD),则可以直接访问变量并且不需要getter和setter,但必须为public。如果设置@AccessType(PROPERTY),通过getter和setter方法访问Entity的变量。@JoinColumn指定一个...

SpringBoot Controller接收参数的几种常用方式

获取路径参数。即url/{id}这种形式。获取查询参数。即url?name=这种形式例子GET http://localhost:8080/demo/123?name=suki_rong对应的java代码:@GetMapping("/demo/{id}")publicvoiddemo(@PathVariable(name="id")Stringid,@RequestParam(name="name")Stringname){System.out.println("id="+id);System.out.println("name="+name);}也可以设置默认publicStringsay(@PathVariable("id")Integerid,@RequestParam(value="name",required=false,defaultValue="0")Stringname){return"id="+id+";name="+name;}输出结果: id=123 name=suki_rong因为是POST请求,这里用Postman的截图结合代码说...

基于SpringJDBC的事务(Transaction)处理

事务可以保障同一个业务中的多次对数据的写操作全部成功,或全部失败,以此保障数据安全。所以,某个业务中有超过1次的增/删/改操作,就必须使用事务,例如某个业务中有2次Update操作,或者1次Update加上1次Delete操作,甚至3次Update操作等。在使用了SpringJDBC后,如果需要使用事务保障数据安全,只需要在业务方法之前添加`@Transactional`注解即可。在SpringJDBC中,事务的操作大致是:开启事务:begintry{执行数据操作,增/改/删提交事务:commit}catch(RuntimeExceptione){回滚事务:rollback}也就是说,当框架以事务的方式执行业务时,将开启事务,如果能正常执行结束,则提交事务,如果执行过程中捕获到`RuntimeException`,则会自动回滚。`@Transactional`注解还可以添加在业务类之前,则表示该业务类中所有业务方法都是以事务的方式来执行,通常并不推荐这样处理,不必要的事务对QPS有负面影响。还可以在注解中配置`rollbackFor`来确定捕获哪些异常时才会自动回滚事务,例如:@Tra...

基于SpringMVC的文件上传

####1.创建项目创建`MavenProject`,`GroupId`为`cn.tedu.spring`,`ArtifactId`为`SRPINGMVC-03-UPLOAD`,`Packaging`选择`war`。除了添加SpringMVC必要的依赖,另外还需要添加`commons-fileupload`依赖:<dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.4</version></dependency> ####2.静态页面在项目的`webapp`下创建`index.html`,该页面要求:1. 表单`<form>`的`method`属性必须是`post`,因为上传的文件的数据量相对一般的请求参数来说,是非常大的数据,URL中放不下,另外,`enctype`属值的值必须是`multipart/form...

springboot项目上传文件出现临时文件目录为空

最近写文件上传到服务器读取的代码,前端使用FormData上传,服务端用MultipartFile接收,自己测试了下MultipartFile对象有什么东西,结果一般属性都能出来,测试getInputStrea()方法的时候出现了以下错误,简单一看这是什么目录,从来没见过啊: 百度一番之后发现了这是临时文件存放的路径,不清楚根据什么去放在这个目录的,但是这个目录本机的确没有,linux系统下好像系统会10天清空一次,翻阅了API底下有这个百度的时候也发现另外一个坑,spring配置的MaxInMemorySize配置决定会不会存成临时文件,超过MaxInMemorySize这个大小,则会生成一个临时文件在你的localhost文件夹下。小于这个值,则是存在内存中,不生产临时文件了,所以这个值设置小点,报错也是FileNotFoundException,注意一下 有网友建议springboot配置tomcat临时文件目录,这个方法没试,我是直接在配置类中加了一个方法,可以参考下:@BeanpublicMultipartConfigElementmultipartCon...

Spring中的@Transactional(rollbackFor = Exception.class)属性详解

序言今天我在写代码的时候,看到了。一个注解@Transactional(rollbackFor=Exception.class),今天就和大家分享一下,这个注解的用法; 异常如下图所示,我们都知道Exception分为运行时异常RuntimeException和非运行时异常error是一定会回滚的如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是主程序终止。 如果不想终止,则必须捕获所有的运行时异常,决不让这个处理线程退出。队列里面出现异常数据了,正常的处理应该是把异常数据舍弃,然后记录日志。不应该由于异常数据而影响下面对正常数据的处理。非运行时异常是RuntimeException以外的异常,类型上都属于Exception类及其子类。如IOException、SQLException等以及用户自定义的Exception异常。对于这种异常,JAVA编译器强制要求我们必需对出现的这些异常进行catch并处理,否则程序就不能编译通过。所以,面对这种异常不管我们是否愿意,只能自己去写一大堆catch块去处理可能的异常。 事务管理方式&nb...

关于spring-boot中的@SpringBootApplication中的@ComponentScan的basePackages的路劲的设置。

最近在看spring-boot的东西,然后搭建了spring-boot的简单项目。但是在spring的入口处加载的时候一直加载不到。最后看了@SpringBootApplication的源码才知道@ComponentScan如果不设置basePackage的话默认会扫描包的所有类,所以最好还是写上basePackage,减少加载时间。默认扫描**/*.class路径比如这个注解在com.first.springbootproject.springboot下面,那么会扫描这个包下的所有类还有子包的所有类,比如包com.first.springbootproject.springboot.helloworld的应用。综上所述我们可以知道:SpringBootApplication启动时会默认扫描主类当前包及子包,如果需要扫描主类当前包外的其他包或不扫描当前包下的特定包或类,可通过下列属性实现:@ComponentScan(basePackages={"com.first.springbootproject.springboot.helloworld"})通过上面的注释spring在启动的时...

spring4.0之二:@Configuration的使用

  从Spring3.0,@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。注意:@Configuration注解的配置类有如下要求:@Configuration不可以是final类型;@Configuration不可以是匿名类;嵌套的configuration必须是静态类。一、用@Configuration加载spring1.1、@Configuration配置spring并启动spring容器1.2、@Configuration启动容器+@Bean注册Bean1.3、@Configuration启动容器+@Component注册Bean1.4、使用AnnotationConfigApplicationContext注册AppContext类的两种方法1.5、配置Web应用程序(web.xml中配置A...

Spring Boot + Spring Cloud 构建微服务系统(一):服务注册和发现(Consul)

什么是ConsulConsul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其它分布式服务注册与发现的方案,Consul的方案更“一站式”,内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其它工具(比如ZooKeeper等)。使用起来也较为简单。Consul使用Go语言编写,因此具有天然可移植性(支持Linux、windows和MacOSX);安装包仅包含一个可执行文件,方便部署,与Docker等轻量级容器可无缝配合。Consul安装访问 Consul官网 ,根据操作系统类型,选择下载Consul的最新版本。我这里选择windows版本。下载下来是一个zip压缩包,解压之后,是一个exe可执行文件。 打开CMD终端,进入consul.exe所在目录,执行如下命令启动Consul服务。cdC:consul_1.3.0_windows_amd64  #进入consul.exe所在目录consulagent-dev#启动服务,-dev表示开发模式运行,另外还有-serve...

最全面的改造Zuul网关为Spring Cloud Gateway(包含Zuul核心实现和Spring Cloud Gateway核心实现)

前言:最近开发了Zuul网关的实现和SpringCloudGateway实现,对比SpringCloudGateway发现后者性能好支持场景也丰富。在高并发或者复杂的分布式下,后者限流和自定义拦截也很棒。 提示:本文主要列出本人开发的Zuul网关核心代码以及SpringCloudGateway核心代码实现。因为本人技术有限,主要是参照了SpringCloudGateway 如有不足之处还请见谅并留言指出。 1:为什么要做网关(1)网关层对外部和内部进行了隔离,保障了后台服务的安全性。(2)对外访问控制由网络层面转换成了运维层面,减少变更的流程和错误成本。(3)减少客户端与服务的耦合,服务可以独立运行,并通过网关层来做映射。(4)通过网关层聚合,减少外部访问的频次,提升访问效率。(5)节约后端服务开发成本,减少上线风险。(6)为服务熔断,灰度发布,线上测试提供简单方案。(7)便于进行应用层面的扩展。  相信在寻找相关资料的伙伴应该都知道,在微服务环境下,要做到一个比较健壮的流量入口还是很重要的,需要考虑的问题也比较复杂和众多。 ...

Spring Cloud Gateway入门

1、什么是SpringCloudGatewaySpringCloudGatewaySpring官方基于Spring5.0,SpringBoot2.0和ProjectReactor等技术开发的网关,SpringCloudGateway旨在为微服务架构提供一种简单而有效的统一的API路由管理方式。SpringCloudGateway作为SpringCloud生态系统中的网关,目标是替代NetflixZUUL,其不仅提供统一的路由方式,并且基于Filter链的方式提供了网关基本的功能,例如:安全,监控/埋点,和限流等。2、SpringCloudGateway入门案例2.1创建maven工程,pom.xml文件<projectxmlns="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.0http://maven.apache.org/xsd/maven-4....
代码星球 代码星球·2020-04-01

Spring boot获取yml字段内容为null的各种情况

首先,在resource目录下配置test.yml文件A:B:http://123.com?C:username="lili"&password="123456"D:username="lisa"&password="123456"1.为了调用方便,将参数全部设置为static,结果可想而知,获取不到,只能是nullpackagecom.example.demo.constants;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.stereotype.Component;@ComponentpublicclassTestYml{publicstaticStringB;publicstaticStringC;publicstaticStringD;</span><spanstyle="color:#0000ff;">public</span><spanstyle="color:#000...
首页上一页...214215216217218...下一页尾页