
spring
文章平均质量分 64
spring
xiaokanfuchen86
这个作者很懒,什么都没留下…
展开
-
controller层_Spring中的Controller ,Service,Dao是不是线程安全的?
结论:不是线程安全的Spring容器中的Bean是否线程安全,容器本身并没有提供Bean的线程安全策略,因此可以说Spring容器中的Bean本身不具备线程安全的特性,但是具体还是要结合具体scope的Bean去研究。Spring 的 bean 作用域(scope)类型singleton:单例,默认作用域。 prototype:原型,每次创建一个新对象。 request:请求,每次Http请求创建一个新对象,适用于WebApplicationContext环境下。 session:会话..转载 2021-06-11 21:29:07 · 217 阅读 · 0 评论 -
Spring的《XML显式装配bean》之通过属性property注入bean
这篇blog主要是介绍两点:1. 怎样通过属性向对象注入值?2. 怎样通过属性向对象注入另一个对象的引用?这里的给对象注入值不是通过构造器注入,而是通过setter方法直接给对象的属性注入值。1.怎样通过属性向对象注入值?(1)蛋糕类Cake:这一个领域类我们只需要一个Cake就够了,但是我们在里面会加上名称(name)和大小(size)这两个属性,然后我们通过spring来帮我们赋值注入。package spring.ch1.topic7_1;/** * Created by.转载 2021-05-07 22:32:26 · 912 阅读 · 0 评论 -
Spring 在xml中引入properties文件方式和问题
一、通过标签<context:property-placeholder >1. 示例: 在spring.xml配置文件中添加标签 <context:property-placeholder location="classpath:redis-key.properties"/>2. 用法(1)在xml文件中使用 <property name="url" value="${jdbc.url}" /> <property nam转载 2021-04-13 08:41:46 · 4702 阅读 · 0 评论 -
org.springframework.context.support.ReloadableResourceBundleMessageSource
标题准确来说应该是“使用Spring中的IoC功能来实现我们所开发项目系统的国际化”,国际化不是针对IoC的,而是针对你开发的整个系统。如果你使用过Eclipse的国际化,或者用过Eclipse的“外部化字符串”向导(Eclipse主菜单:源代码->外部化字符串),那么对Spring提供的国际化功能应该是非常容易理解,两者基本一样,或者说各种Java程序的国际化方式都基本一样。先谈谈Eclipse国际化的两个组成部分:*.properties的资源文件、获取资源文件内容的Message类。而Sp转载 2021-04-05 17:07:22 · 880 阅读 · 0 评论 -
模板文件应用
模板文件<p> <h4>approval</h4> <br/> <p>this is a test context data.{0}</p></p>读取模板文件代码private static final String templatePath="template/";private static final String templateSuffix=".xml";public static原创 2021-04-05 14:42:14 · 124 阅读 · 0 评论 -
使用Spring Session实现Spring Boot水平扩展
本文使用Spring Session实现了Spring Boot水平扩展,每个Spring Boot应用与其他水平扩展的Spring Boot一样,都能处理用户请求。如果宕机,Nginx会将请求反向代理到其他运行的Spring Boot应用上,如果系统需要增加吞吐量,只需要再启动更多的Spring Boot应用即可。Spring Boot应用通常会部署在多个Web服务器上同时提供服务,这样做有很多好处:单个应用宕机不会停止服务,升级应用可以逐个升级而不必停止服务。 提高了应用整体的吞吐量。我们称转载 2021-04-03 17:20:38 · 402 阅读 · 0 评论 -
新浪面试题: 讲述单点登录认证流程
一、什么是sso单点登录(sso),简称sso,是目前比较流行的企业业务整合的解决方案之一。sso是指在多个应用系统中,用户只需登录一次就可以访问所有相互信任的应用系统。比如有多个子系统, a.com,b.com,c.com ...要求:用户在任意一个子系统登录成功后,都可以访问其它子系统中受保护的资源。二、认证流程1)用户通过浏览器访问子系统A受保护的资源,既a.com/pageA。2)在子系统A中没有用户session数据,子系统A认为用为未登录,于是子系统A将请求重定向到认证中心sso.c原创 2021-03-28 21:48:46 · 1028 阅读 · 0 评论 -
tomcat CATALINA_BASE环境变量配置
catalina.home 和 catalina.base:catalina.home和catalina.base这两个属性仅在你需要安装多个Tomcat实例而不想安装多个软件备份的时候使用,这样能节省磁盘空间。以Tomcat6.0为例,其Tomcat目录结构如下:bin (运行脚本)conf (配置文件)lib (核心库文件)logs (日志目录)temp (临时目录)webapps (自动装载的应用程序的目录)work (JVM临时文件目录[java.io.tmpdir])让.转载 2021-03-10 15:38:50 · 2014 阅读 · 0 评论 -
[Tomcat]使用Catalina_base部署多个tomcat实例
背景 一台机器上,如果想要部署多个tomcat实例,而又不想安装多个tomcat的话,可以借助tomcat的Catalina_base实现共享类库和bin命令,只要自定义自己的配置即可。 关于CATALINA_HOME和CATALINA_BASE官方解释: CATALINA_HOME:表示Tomcat安装的根目录,例如/home/tomcat/apache-tomcat-9.0.10 或C:\Program Files\apache-tomcat-9.0.10。CATALINA_BA转载 2021-03-10 15:34:42 · 671 阅读 · 0 评论 -
设置aliyun阿里云maven本地仓库镜像repositories,pluginRepositories到pom.xml的方法
为什么不把repositories,pluginRepositories设置在setting.xml而要设置在pom.xml。在idea中设置在setting.xml 中经常会去配置这个xml文件的位置,不如直接设置在pom.xml 里面,而且这并不是一个高频操作。在pom.xml 中 在project 里面添加以下代码。同时设置jar包和插件的仓库<repositories> <repository> <id>.转载 2021-02-21 16:22:36 · 1651 阅读 · 0 评论 -
maven将依赖第三方包打包(package)到jar中
前提:项目是一个纯maven的java工程,通过idea中file-->new-->project-->maven来创建的,不是spring boot工程(不是通过file-->new-->project-->,spring boot工程通过默认的)就可以,不需要额外操作。1.遇到一个问题,项目打包,结果jar中没有第三方包目录结构pom.xml<?xml version="1.0" encoding="UTF-8"?><p.转载 2021-02-21 16:19:04 · 1538 阅读 · 0 评论 -
maven中把依赖的JAR包一起打包
这里所用到的MAVEN-PLUGIN是MAVNE-ASSEMBLY-PLUGIN官方网站是:http://maven.apache.org/plugins/maven-assembly-plugin/usage.html1. 添加此PLUGIN到项目的POM.XML中Xml代码<buizld> <plugins> <plugin> <artifactId>m.转载 2021-02-21 16:13:32 · 1759 阅读 · 0 评论 -
eclipse 导出可运行jar包时三种Library handling的区别
我们在eclipse中打包一个可运行的jar包的时候,Library handing中的选项有下面三种:那么eclipse中Runnable JAR file的这三种打包方式有什么区别呢?第一个Extract required libraries into generated JAR意思是将依赖的jar解压出来变成class丢进你生成的jar里面;第二个Package required libraries into generated JAR意思是将依赖的jar不解压,直接放进你生成的jar里面;转载 2021-02-21 16:07:59 · 1351 阅读 · 1 评论 -
spring中的bean默认是单例模式
一、Spring单例模式及线程安全 Spring框架中的Bean,或者说组件,获取实例的时候都是默认单例模式,这是在多线程开发的时候需要尤其注意的地方。 单例模式的意思是只有一个实例,例如在Spring容器中某一个类只有一个实例,而且自行实例化后并项整个系统提供这个实例,这个类称为单例类。 当多个用户同时请求一个服务时,容器会给每一个请求分配一个线程,这时多个线程会并发执行该请求对应的业务逻辑(成员方法),此时就要注意了,如果该处理逻辑中有对单例状态的修改(体现为该单例的成员属性),则必须转载 2021-02-18 21:05:02 · 5174 阅读 · 0 评论 -
@Autowired用法详解
@Autowired 注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。通过 @Autowired的使用来消除 set ,get方法。在使用@Autowired之前,我们对一个bean配置起属性时,是这用用的<property name="属性名" value=" 属性值"/> 通过这种方式来,配置比较繁琐,而且代码比较多。在Spring 2.5 引入了 @Autowired 注释下面用案例来具体说明UserRepository.java.转载 2021-02-17 19:29:08 · 751 阅读 · 0 评论 -
Spring注解@Resource和@Autowired区别对比详解
前言@Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Spring支持该注解的注入。1、共同点两者都可以写在字段和setter方法上。两者如果都写在字段上,那么就不需要再写setter方法。2、不同点(1)@Autowired@Autowired为Spring提供的注解,需要导入包org.springframework.beans.factory转载 2021-02-17 19:24:07 · 313 阅读 · 0 评论 -
java -cp & java jar的区别
java -cpjava -cp 和 -classpath 一样,是指定类运行所依赖其他类的路径,通常是类库和jar包,需要全路径到jar包,多个jar包之间连接符:window上分号“;”.Linux下使用“:”。windows环境:java -cp .;d:\work\other.jar;d:\work\my.jar packname.mainclassname linux环境:java -cp .:/hone/myuser/work/other.jar:/hone/myuser转载 2021-02-10 20:27:09 · 182 阅读 · 0 评论 -
HashMap和LinkedHashMap的区别
HashMap,LinkedHashMap,TreeMap都属于MapMap 主要用于存储键(key)值(value)对,根据键得到值,因此键不允许键重复,但允许值重复。HashMap是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用 Coll转载 2021-01-30 14:07:37 · 3577 阅读 · 0 评论 -
TreeSet的两种排序方式:自然排序和定制排序
TreeSet的两种排序方式:自然排序和定制排序TreeSet是SortedSet接口的实现类,TreeSet可以确保集合元素处于排序状态。TreeSet有两种排序方法:自然排序和定制排序。默认采用自然排序。1. 自然排序要求自定义类实现java.lang.Comparable接口并重写其compareTo(Object obj)的抽象方法在此方法中,指明按照自定义类的哪个属性进行排序。向TreeSet中添加元素时,首先按照compareTo()进行比较,一旦返回0,虽然仅是两个对象的此属转载 2021-01-30 14:02:31 · 966 阅读 · 0 评论 -
Java集合类(四)—TreeSet
TreeSetCollection.pngTreeSet是一个有序的集合,它的作用是提供有序的Set集合。它继承了AbstractSet抽象类,实现了NavigableSet<E>,Cloneable,Serializable接口。TreeSet是基于TreeMap实现的,TreeSet的元素支持2种排序方式:自然排序或者根据提供的Comparator进行排序。TreeSet.png(1)TreeSet继承于AbstractSet,并且实现了Nav...转载 2021-01-30 13:42:10 · 244 阅读 · 0 评论 -
来复习一波,HashMap底层实现原理解析
前言HashMa是Java中最常用的集合类框架,也是Java语言中非常典型的数据结构,同时也是我们需要掌握的数据结构,更重要的是进大厂面试必问之一。数组特点存储区间是连续,且占用内存严重,空间复杂也很大,时间复杂为O(1)。优点:是随机读取效率很高,原因数组是连续(随机访问性强,查找速度快)。缺点:插入和删除数据效率低,因插入数据,这个位置后面的数据在内存中要往后移的,且大小固定不易动态扩展。链表特点区间离散,占用内存宽松,空间复杂度小,时间复杂度O(N)。优点:插.转载 2021-01-30 13:22:13 · 131 阅读 · 0 评论 -
java的Spring中@Value注解的使用
1、@Value注解作用该注解作用的作用是将我们配置文件的属性读出来,有@Value("${}")和@Value("#{}")两种方式2、@Value注解作用的两种方式 第一种方式@Value("${}"):在使用Springboot项目搭建的项目时,配置文件application.properties中已经被加载到了项目中,在项目中可以通过该注解获取配置文件中的信息 第二种方式@Value("#{}"):两种的注解区别在值上的区别为: @Value的值有两类: ①转载 2021-01-23 15:23:03 · 3520 阅读 · 0 评论 -
spring中@Value(“${key}“)值原样输出${key}分析与解决
问题:最近发现一个项目中,在类中通过@Value("${key}")获取配置文件中变量值突然不行了,直接输出${key},示例代码如下:java类中:import org.springframework.beans.factory.annotation.Value; @Value("${recharge.uri}") private String rechargeUri;application.properties配置文件中:recharge.uri=http://转载 2021-01-23 15:21:27 · 729 阅读 · 0 评论 -
@Value取不到值,直接输出了${name}字符串
项目中经常会用到配置文件,定义成properties的形式比较常见,为了方便使用一般在spring配置文件中做如下配置:<context:property-placeholder ignore-resource-not-found="true" location="classpath:xxxx.properties" file-encoding="utf-8"/>这样在程序代码中直接用@Value("${name}"),就能直接取到properties文件中定义的变量值。但是在项目中转载 2021-01-23 15:20:06 · 1029 阅读 · 0 评论 -
@Value(“${xxxx}“)注解的配置及使用
代码中的用法Spring 通过@Value注解获取*.porperties文件code的内容,然后赋值给使用该注解的Code属性上。@Value("${code}")private String Code;看一下这个resource.properties文件(resource为文件名称)code=002spring中的配置<context:property-placeholder location="classpath:resources/resource.proper转载 2021-01-23 15:17:51 · 1163 阅读 · 0 评论 -
mybatis中映射文件include标签应用
MyBatis中sql标签定义SQL片段,include标签引用,可以复用SQL片段可以使用标签提取出来,在使用的地方使用标签引用即可.sql标签中id属性对应include标签中的refid属性。通过include标签将sql片段和原sql片段进行拼接成一个完整的sql语句进行执行。具体用法如下:1.引用同一个xml中的sql片段<sql id="sqlid"> res_type_id,res_type</sql><select id="selectbyI转载 2021-01-16 13:07:35 · 1133 阅读 · 0 评论 -
request.getParameter() 和request.getAttribute() 区别
getParameter是用来接受用post和get方法传递过来的参数的.getAttribute必须先setAttribute.(1)request.getParameter()取得是通过容器的实现来取得通过类似post,get等方式传入的数据,request.setAttribute()和getAttribute()只是在web容器内部流转,仅仅是请求处理阶段。(2)request.getParameter()方法传递的数据,会从Web客户端传到Web服务器端,代表HTTP请求数据。reques...转载 2021-01-14 21:17:15 · 111 阅读 · 0 评论 -
eclipse maven 打war包的几种方式
第一种:利用pom.xml文件打包。右键pom.xml文件,选择Debug as或Run as 都行。但需要选择Maven install 打包执行成功后,日志会打印出位置(看自己配置是否日志输出)。如果没有输出,在默认的C盘.m2文件夹中第二种方式:右键项目。选择Debug as 或 Run as 。但是这个时候要选择Debug configurations先Browse Workspace 选择需要打包的项目 ,然后在Goals:中输入clean inst...转载 2021-01-06 22:27:40 · 2634 阅读 · 0 评论 -
eclipse和maven生成web项目的war包的操作方法
一、eclipse中,在需要打包的项目名上右击,然后把鼠标光标指向弹出框中的“run as”:二、之后会看到在这个弹出框的右侧会出现一个悬浮窗,如下:三、在上边的第二个悬浮窗鼠标点击“maven clean”,maven会清除掉之前对这个项目的打包信息;执行以后在eclipse的控制台console会看到如下信息:四、然后重复一、二步,选择“mavenbuild”,会看到如下弹出界面,在“Goals”后的文本框内输入“-X package”,勾选上下方...转载 2021-01-06 22:23:21 · 338 阅读 · 0 评论 -
Mybatis 中的<![CDATA[ ]]>浅析
在使用mybatis 时我们sql是写在xml 映射文件中,如果写的sql中有一些特殊的字符的话,在解析xml文件的时候会被转义,但我们不希望他被转义,所以我们要使用<![CDATA[ ]]>来解决。<![CDATA[ ]]> 是什么,这是XML语法。在CDATA内部的所有内容都会被解析器忽略。如果文本包含了很多的"<"字符 <=和"&"字符——就象程序代码一样,那么最好把他们都放到CDATA部件中。但是有个问题那就是<if test="..转载 2020-12-18 14:34:33 · 225 阅读 · 0 评论 -
EAR项目构建的几种方式
PS:说实话,在写这篇帖子之前,我也没用过EAR,因此该贴仅是记录学习过程用~有什么不对的地方,或者欠缺的,还请各位看官斧正,先谢过各位了~~一、基于传统WebProject方式在eclipse中,右键new > project > Dynamic web project ,在弹出的对话框中输入项目名称testWeb,注意,在EAR membership中勾选上“Add project to an EAR”,并输入准备创建的EAR的名称,例如TestEAR,再创建几个Web pr转载 2020-12-15 22:25:44 · 1626 阅读 · 0 评论 -
多war包部署在一个tomcat中
多服务部署在一个tomcat中,服务之间互相调用,有2中方式。1、默认tomcat配置,将多个war包放在tomcat的webapps下面这里其是可以看看/conf/server.xml的配置默认端口8080,而且执行webapps下面的war包,这样那你每个服务之间的调用代码或者配置都要改成8080端口。然后启动startup.bat就行啦,在浏览器中访问8080 的多个服务,可以分别打开项目名访问。2、第二种方式是修改server.xml的配置文件,定义每个服务各一个端口,然后服务器之转载 2020-12-14 20:22:30 · 2315 阅读 · 0 评论 -
在Mybatis的xml文件调用java类的方法
在 mybatis 的映射 xml 文件调用 java 类的方法:使用的是 OGNL 表达式,表达式格式为:${@prefix@methodName(传递参数名称)}因为我比较懒,每次都要手动给 createBy 赋值,想有没有一种简单的方法,百度一番,搜到了 mybatis 还可以调用 java 类的方法调用saveDoc方法的时候,才会去调用SecurityUtils类的getUserId方法 <insert id="saveDoc"> IN...转载 2020-12-11 15:28:27 · 659 阅读 · 0 评论 -
ObjectMapper使用
在项目中使用到了ObjectMapper,故研究了一下。现将自己的几个测试用例和大家分享一下~首先在pom.xml文件中,加入依赖: <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>转载 2020-10-07 12:02:12 · 279 阅读 · 0 评论 -
Java:JSON和Map相互转换
需要jar包:jackson-core-2.6.0.jar,jackson-databind-2.6.0.jar,jackson-annotations-2.6.0.jar1. JSON String to Mappackage com.inspur.trc.util; import java.util.HashMap;import java.util.Map; import com.fasterxml.jackson.core.type.TypeReference;import co转载 2020-10-07 11:56:46 · 938 阅读 · 0 评论 -
MssAuthenticationProvider
MssAuthenticationProvider.javapackage com.liu.security;import org.springframework.security.authentication.AuthenticationProvider;import org.springframework.security.authentication.BadCredentialsException;import org.springframework.security.authentica原创 2020-09-29 17:16:10 · 901 阅读 · 0 评论 -
WebMvcConfig
WebMvcConfig.javaimport java.util.Arrays;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Import;import org.springframework.http.HttpMethod;.原创 2020-09-29 17:12:47 · 1485 阅读 · 0 评论 -
Apache 代理(Proxy) 转发请求
代理分为:正向代理(Foward Proxy)和反向代理(Reverse Proxy)1、正向代理(Foward Proxy)正向代理(Foward Proxy)用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器,由代理服务器负责请求Internet,然后返回Internet的请求给内网的客户端。Internal Network Client ——(request-url)——> Fow...转载 2020-09-29 10:30:50 · 2675 阅读 · 0 评论 -
Apache与Tomcat有什么关系和区别
Apache和Tomcat都是web网络服务器,两者既有联系又有区别,在进行HTML、PHP、JSP、Perl等开发过程中,需要准确掌握其各自特点,选择最佳的服务器配置。 Apache是web服务器(静态解析,如HTML),tomcat是java应用服务器(动态解析,如JSP) Tomcat只是一个servlet(jsp也翻译成servlet)容器,可以认为是apache的扩展,但是可以独立于apache运行两者从以下几点可以比较的: 1、两者都是apache组织开发的 2...转载 2020-09-29 10:26:13 · 1163 阅读 · 0 评论 -
Spring Security-获取当前登录用户的详细信息
在Spring框架里面,可以通过以下几种方式获取到当前登录用户的详细信息:1. 在Bean中获取用户信息Authentication authentication = SecurityContextHolder.getContext().getAuthentication();if (!(authentication instanceof AnonymousAuthenticationToken)) { String currentUserName = authentication.ge转载 2020-09-23 22:00:30 · 2392 阅读 · 1 评论