

@WebFilter( filterName="testFilter", urlPatterns={"/testRest"} ) public class SpringRequestBodyFilter extends OncePerRequestFilter{ @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { BodyReaderHttpServletRequestWrapper requestWrapper = new BodyReaderHttpServletRequestWrapper(request); System.out.println("body: " + requestWrapper.getBody()); filterChain.doFilter(requestWrapper, response); } } public class BodyReaderHttpServletRequestWrapper extends HttpServletRequestWrapper{ private final String body; public BodyReaderHttpServletRequestWrapper(HttpServletRequest request) throws IOException { super(request); try(BufferedReader bufferedReader = request.getReader()){ body = request.getReader().lines().collect(Collectors.joining()); } } @Override public ServletInputStream getInputStream() throws IOException { return new DelegatingServletInputStream(new ByteArrayInputStream(body.getBytes())); } @Override public BufferedReader getReader() throws IOException { return new BufferedReader(new InputStreamReader(this.getInputStream())); } public String getBody() { return this.body; } }第10行將HttpServletRequest包裝成BodyReaderHttpServletRequestWrapper傳給filter
@SpringBootApplication @ServletComponentScan("test.annotation.filter") public class SptringAnnotationFilterApplication { public static void main(String[] args) { SpringApplication.run(SptringAnnotationFilterApplication.class, args); } } @WebFilter( filterName="testFilter", urlPatterns={"/testRest"} ) public class SpringAnnotationFilter implements Filter{ @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { // do something filterChain.doFilter(request, response); } @Override public void destroy() { } }SptringAnnotationFilterApplication
@SpringBootApplication public class SpringBeanConfigFilterApplication { public static void main(String[] args) { SpringApplication.run(SpringBeanConfigFilterApplication.class, args); } } @Configuration public class FilterConfig { @Bean public FilterRegistrationBean<Filter> registFilter() { FilterRegistrationBean<Filter> registration = new FilterRegistrationBean<>(); registration.setFilter(new SpringBeanConfigFilter()); registration.addUrlPatterns("/testRest"); registration.setOrder(2); registration.setName("testFilter"); return registration; } @Bean public FilterRegistrationBean<Filter> registFilter2() { FilterRegistrationBean<Filter> registration = new FilterRegistrationBean<>(); registration.setFilter(new SpringBeanConfigFilter2()); registration.addUrlPatterns("/testRest"); registration.setOrder(1); registration.setName("testFilter2"); return registration; } } public class SpringBeanConfigFilter implements Filter{ @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { // do something filterChain.doFilter(request, response); } @Override public void destroy() { } } public class SpringBeanConfigFilter2 implements Filter{ @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { // do something filterChain.doFilter(request, response); } @Override public void destroy() { } }
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.0.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> <version>2.0.4.RELEASE</version> </dependency>
@SpringBootApplication( exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class} ) public class TestApplication { public static void main(String[] args) { SpringApplication.run(TestApplication.class, args); } }最重要的就是要設定 exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class}
mongodb.connect1.uri=mongodb://自己的連線設定1 mongodb.connect1.database=自己的database1 mongodb.connect2.uri=mongodb://自己的連線設定2 mongodb.connect2.database=自己的database2
@Configuration public class TestConfigurer{ @Bean @ConfigurationProperties(prefix = "mongodb.connect1") public MongoProperties getConnectionSetting1() { return new MongoProperties(); } @Bean @ConfigurationProperties(prefix = "mongodb.connect2") public MongoProperties getConnectionSetting2() { return new MongoProperties(); } @Bean(name="Template1") public MongoTemplate mongoTemplate1(){ MongoProperties p = getConnectionSetting1(); return genMongoTemplateWithMongoProperties(p); } @Bean(name="Template2") public MongoTemplate mongoTemplate2(){ MongoProperties p = getConnectionSetting2(); return genMongoTemplateWithMongoProperties(p); } private MongoTemplate genMongoTemplateWithMongoProperties(MongoProperties p){ MongoClientURI uri = new MongoClientURI(p.getUri()); MongoClient client = new MongoClient(uri); SimpleMongoDbFactory f = new SimpleMongoDbFactory(client, p.getDatabase()); return new MongoTemplate(f); } }
@Repository public class TestDao { @Autowired @Qualifier("Template1") private MongoTemplate mongoTemplate1; @Autowired @Qualifier("Template2") private MongoTemplate mongoTemplate2; }
long i = new Long(1);
public void mehtod(String... args)
static import java.lang.System.*; public class HelloWorld { public static void main(String args[]){ out.println("Hello World."); } }
HashMap<String, String> map = new HashMap<>()
try{ }catch(NullPointerException | IllegalArgumentException e){ e.printStackTrace(); }
try(FileReader reader = new FileReader("file")){ }catch(IOException){ e.printStackTrace(); }在try中的資源,有實作java.lang.AutoCloseable的話
紅豆 | 1 斤 (600公克) |
油 | 6 兩 (250公克) |
糖 | 1 斤 (600公克) |
糯米 | 2 斤 (1200公克)(1 斤約有10個粽子) |
|
|
圖一 | 圖二 |