SpringBoot+SpringCloud注意事项
SpringBoot+SpringCloud注意事项
云遮七月 发表于8个月前
SpringBoot+SpringCloud注意事项
  • 发表于 8个月前
  • 阅读 144
  • 收藏 0
  • 点赞 0
  • 评论 0

【腾讯云】如何购买服务器最划算?>>>   

1、在使用SpringCloud的时候如果有模块需要使用xml配置properties。那么请使用PropertySourcesPlaceholderConfigurer类或者使用context:property-placeholder,不要使用PropertyPlaceholderConfigurer,否则注册到SpringCloud的ApplicationName是UNKNOWN,Status中获取到的URL地址端口是默认的8080。

<bean id="baseServiceConfLocation"
		class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
		<property name="order" value="100" />
		<property name="ignoreUnresolvablePlaceholders" value="true" />
		<property name="locations">
			<list>
				<value>classpath:database.properties</value>
				<value>classpath:redis.properties</value>
				<value>classpath:quartz.properties</value>
				<value>classpath:sql.properties</value>
			</list>
		</property>
	</bean>

<context:property-placeholder location="classpath:database.properties,classpath:redis.properties,classpath:quartz.properties,classpath:sql.properties" ignore-unresolvable="true"/>

2、SpringBoot如果要忽略url后缀问题,请通过自定义WebMvcConfigurerAdapter中的configureContentNegotiation方法中configurer.favorPathExtension(false)

import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
/**
 * 取代Spring-mvc.xml配置文件,继承默认的SpringBoot注解,增加自定义配置
 *
 */
@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter{
	
	

	/**
	 * org.springframework.web.accept.ServletPathExtensionContentNegotiationStrategy--根据url后缀来判断客户端请求的返回值Content-Type
	 * org.springframework.web.accept.HeaderContentNegotiationStrategy
	 * org.springframework.web.accept.FixedContentNegotiationStrategy
	 */
	@Override
	public void configureContentNegotiation(
			ContentNegotiationConfigurer configurer) {
		// TODO Auto-generated method stub
		//org.springframework.web.accept.ServletPathExtensionContentNegotiationStrategy
		configurer.favorPathExtension(false);
		//org.springframework.web.accept.ParameterContentNegotiationStrategy
		//configurer.favorParameter(false);
		configurer.defaultContentType(MediaType.APPLICATION_JSON);
	}
	


}

3、设置ObjectMapper 属性可以通过如下属性设置时间格式,Map和Bean中的null属性不输出,注意此时不能用@EnableWebMvc注解覆盖默认配置

spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.serialization.write_null_map_values=false
spring.jackson.default-property-inclusion=non_null

 

4、如果使用模板等文件最好放在resources下。否则请使用resources把全部的非java下的输出到${project.build.outputDirectory}
 

<resources>  
	<resource>  
		<directory>${project.basedir}/src/main/webapp</directory>  
		<targetPath>${project.build.outputDirectory}</targetPath>  
	</resource> 
	<resource>  
		<directory>${project.basedir}/src/main/resources</directory>  
		<targetPath>${project.build.outputDirectory}</targetPath>  
	</resource> 
</resources>

5、使用SpringBoot+SpringSecurity的时候自定义的拦截器请不要使用@Bean注解,否则SpringBoot会将之注册为一个FilterRegistrationBean(全局的过滤器),所以最好不用使用xml配置SpringSecurity(道理相同)

protected void configure(HttpSecurity http) throws Exception {
		 http
         .authenticationProvider(provider())
         .userDetailsService(userDetailsService())
         .exceptionHandling()
         .accessDeniedHandler(accessDeniedHandler())
         .authenticationEntryPoint(authenticationEntryPoint())
         .and()
         .sessionManagement()
         .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
         .and()
         .addFilterBefore(preFilter(), AbstractPreAuthenticatedProcessingFilter.class)
         .addFilterBefore(securityFileter(), FilterSecurityInterceptor.class)
         .authorizeRequests()
         //.accessDecisionManager(accessDecisionManager())//去掉否则认证通过之后会再次调用此方法,authenticated
         .antMatchers("/Alarm/Shared/Service/**").authenticated();
         
         
	}

 

共有 人打赏支持
粉丝 0
博文 3
码字总数 1134
×
云遮七月
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: