存档

文章标签 ‘spring’

Spring的@Configuration中@Bean注解无效问题

2017年9月1日 没有评论

在Spring boot(版本1.3.1)项目中,先有一个Configuration的Class,再建另一个,发现新建的这个无法生效。老的没问题。

很偶然的改了一下方法名,就可以了。

然后证实多个Configuration下,如果存在同名的方法,就会不认。返回值不同也不行。

留下点文字,记录这个坑。

关于Spring的Async注解

2016年7月28日 没有评论

今天有同事反馈Spring的@Async注解无效,调用结果还是同步的。
调用方式大体如下:

public void TestAsync(){
    ...
    this.testPrivate();
    ...
}

@Async
private void testPrivate(){
    ...需长时间运行的代码
}

更多内容…

分类: 工作 标签: , ,

Spring with tomcat中文乱码问题

2016年3月11日 没有评论

spring with tomcat,中文乱码,相关版本:

<spring-framework.version>4.0.8.RELEASE</spring-framework.version>
<spring-boot.version>1.1.9.RELEASE</spring-boot.version>

在使用request之前对其设置utf-8编码没效果,debug时发现,其charset为iso-8859-1。

更多内容…

分类: 工作 标签: , ,

Spring集成tomcat之Cookie禁用

2016年2月22日 没有评论

线上服务器发现有Cookie的解析异常,而我们又不需要用Cookie(我们自己管理会话,提供无状态http api服务),准备禁用cookie。异常信息如下:

2016-02-21 13:37:21.248 ERROR 7114 [http-nio-xxxx-exec-121] --- o.a.coyote.http11.Http11NioProcessor     : Error processing request
java.lang.IllegalArgumentException: Control character in cookie value or attribute.
        at org.apache.tomcat.util.http.CookieSupport.isHttpSeparator(CookieSupport.java:193)
        at org.apache.tomcat.util.http.Cookies.getTokenEndPosition(Cookies.java:502)
        at org.apache.tomcat.util.http.Cookies.processCookieHeader(Cookies.java:349)
        at org.apache.tomcat.util.http.Cookies.processCookies(Cookies.java:168)
        at org.apache.tomcat.util.http.Cookies.getCookieCount(Cookies.java:106)
        at org.apache.catalina.connector.CoyoteAdapter.parseSessionCookiesId(CoyoteAdapter.java:1010)
        at org.apache.catalina.connector.CoyoteAdapter.postParseRequest(CoyoteAdapter.java:764)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:416)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1736)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1695)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)

Tomcat禁用cookie相对简单,改conf/context.xml中的Context配置就成:

<Context cookies = "false">...</Context>

我们用的是Spring集成的Tomcat,对tomcat的可配置参数非常有限,当然了,没有这个禁用cookie的选项:

server.tomcat.accesslog.directory=logs # Directory in which log files are created. Can be relative to the tomcat base dir or absolute.
server.tomcat.accesslog.enabled=false # Enable access log.
server.tomcat.accesslog.pattern=common # Format pattern for access logs.
server.tomcat.accesslog.prefix=access_log # Log file name prefix.
server.tomcat.accesslog.suffix=.log # Log file name suffix.
server.tomcat.background-processor-delay=30 # Delay in seconds between the invocation of backgroundProcess methods.
server.tomcat.basedir= # Tomcat base directory. If not specified a temporary directory will be used.
server.tomcat.internal-proxies=10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|\\
        192\\.168\\.\\d{1,3}\\.\\d{1,3}|\\
        169\\.254\\.\\d{1,3}\\.\\d{1,3}|\\
        127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|\\
        172\\.1[6-9]{1}\\.\\d{1,3}\\.\\d{1,3}|\\
        172\\.2[0-9]{1}\\.\\d{1,3}\\.\\d{1,3}|\\
        172\\.3[0-1]{1}\\.\\d{1,3}\\.\\d{1,3} # regular expression matching trusted IP addresses.
server.tomcat.max-http-header-size=0 # Maximum size in bytes of the HTTP message header.
server.tomcat.max-threads=0 # Maximum amount of worker threads.
server.tomcat.port-header=X-Forwarded-Port # Name of the HTTP header used to override the original port value.
server.tomcat.protocol-header= # Header that holds the incoming protocol, usually named "X-Forwarded-Proto".
server.tomcat.protocol-header-https-value=https # Value of the protocol header that indicates that the incoming request uses SSL.
server.tomcat.remote-ip-header= # Name of the http header from which the remote ip is extracted. For instance `X-FORWARDED-FOR`
server.tomcat.uri-encoding=UTF-8 # Character encoding to use to decode the URI.

完整参数配置参见:http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#appendix
更多内容…

分类: 工作 标签: , ,

Maven打包Spring项目成单独文件

2014年10月23日 没有评论

Maven打包项目成单独文件,一般用maven-assembly-plugin插件,一般配置如下:

			<plugin>
				<artifactId>maven-assembly-plugin</artifactId>

				<configuration>
					<appendAssemblyId>false</appendAssemblyId>
					<descriptorRefs>
						<descriptorRef>jar-with-dependencies</descriptorRef>
					</descriptorRefs>
					<descriptors>
						<descriptor>src/main/assemble/package.xml</descriptor>
					</descriptors>
					<archive>
						<manifest>
							<mainClass>*.*.*.Main</mainClass>
						</manifest>
					</archive>
				</configuration>
				<executions>
					<execution>
						<id>make-assembly</id>
						<phase>package</phase>
						<goals>
							<goal>assembly</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

碰到Spring项目,就容易出问题:

Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace

更多内容…

Spring上下文配置之classpath*问题

2013年12月17日 没有评论

今天有同事碰到问题,打在jar包中的spring配置文件无法加载,后发现是上下文配置成了:classpath:spring/*.xml
改成classpath*:spring/*.xml后搞定。

在csdn中看到多篇文章,这么解释的:

classpath*:的出现是为了从多个jar文件中加载相同的文件.
classpath:只能加载找到的第一个文件.

感觉不是太可靠,简单翻了一下源码,在PathMatchingResourcePatternResolver中可以一探究竟。
更多内容…