當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring Boot开发之流水无情(二)
生活随笔
收集整理的這篇文章主要介紹了
Spring Boot开发之流水无情(二)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本篇記錄Spring Boot的幾個知識點:?
(一)一個Maven+Spring Boot項目基本的包結構形式?
(二)一個簡單的在Spring Boot項目集成安全控制?
(二)如何在Spring Boot中記錄log日志?
(四)Spring Boot中幾個常用注解介紹?
ok下面開始正題:?
(一)先看下,官網給出的一個簡單的包結構組成:?
Java代碼???com?? ?+-?example?? ?????+-?myproject?? ?????????+-?Application.java?? ?????????|?? ?????????+-?domain?? ?????????|???+-?Customer.java?? ?????????|???+-?CustomerRepository.java?? ?????????|?? ?????????+-?service?? ?????????|???+-?CustomerService.java?? ?????????|?? ?????????+-?web?? ?????????????+-?CustomerController.java ?
然后,看下散仙實際工作中的項目結構:?
? ? ?
需要注意的地方如下:?
1,在src/main/java包下的第一層結構中,是必須放一個含有main方法的主啟動的類,而且只能有一個main方法,如果再出現其他的main方法,在使用maven編譯打包時,會報編譯錯誤,當然在src/test/java包下,可以出現多個,但建議最好使用Junit進行單元測試.?
? ? 這個main方法啟動,就會啟動內嵌的tomcat或jetty容器,然后加載所有需要加載的或掃描的類或資源文件。上篇博客中,散仙為了測試方便,是直接在當前的Conroller中,啟動了一個測試服務,這樣做適合單獨調試,如果是生產環境下的啟動方法,則是散仙前面所講的,在java包的根目錄下建立一個main方法類,負責啟動所有的資源。?
在本例中,散仙的main代碼如下:?
Java代碼???package?com.dhgate.rate;?? ?? import?org.springframework.boot.SpringApplication;?? import?org.springframework.boot.autoconfigure.EnableAutoConfiguration;?? import?org.springframework.context.annotation.ComponentScan;?? import?org.springframework.context.annotation.Configuration;?? ?? @Configuration//配置控制?? @EnableAutoConfiguration//啟用自動配置?? @ComponentScan//組件掃描?? public?class?ApplicationMain?{?? ????public?static?void?main(String[]?args)?throws?Exception?{?? ????????//啟動Spring?Boot項目的唯一入口?? ????????SpringApplication.run(ApplicationMain.class,?args);?? ?? ????}?? ?? } ?
2,在src/main/resource目錄下面,是放置一些配置文件,或模板支持的文件,如JSP,Velocity,Freemaker等,這里面比較常用或重要的一個文件,就是Spring Boot的集中式配置文件application.properties這個文件了,這里面給其他大部分的組件,提供了一個可集中管理和配置的中心,包括安全控制,redis,solr,mangodb的連接信息,以及數據庫連接池,容器端口號,jmx,java mail,動態模板等。此外這個目錄下默認是可以訪問靜態資源的,比如我們的css,js,或者第三方的一些引用文件等。?
(二)關于在Spring Boot的配置簡單的安全訪問控制,這一點非常容器,我們只需要做如下二步,即可。?
1,在pom文件中,引入spring-boot-starter-security的maven依賴。?
Xml代碼???<dependency>?? ????????<groupId>org.springframework.boot</groupId>?? ????????<artifactId>spring-boot-starter-security</artifactId>?? ????</dependency>??
2,在application.properties中,配置訪問的用戶名和密碼?
Java代碼???#用戶名?密碼配置?? security.user.name=admin?? security.user.password=test ?
再次,訪問鏈接時,會出現以下,攔截頁面,就代表配置成功:?
?
當然這只是,一個初級的配置,更復雜的配置,可以分不用角色,在控制范圍上,能夠攔截到方法級別的權限控制。?
(三)日志的重要性,不言而喻,Spring Boot支持大部分的log配置,其中包括:?
(1)java util logging?
(2)log4j?
(3)log4j2?
(4)logbak?
默認的情況下spring boot會選擇logback作為日志記錄的載體,當然要想它正常的工作,需要依賴 Commons Logging, Java Util Logging, Log4J 或 SLF4J,相信大部分同學都是選擇使用log4j.properties作為我們的日志配置和管理,但是散仙在Spring Boot中一直沒有測試集成成功,所以就放棄使用log4j.properties作為日志載體,而是選擇了Spring Boot推薦的logbak作為日志的配置文件,用過之后感覺也不錯。?
使用步驟:?
1,將logbak.xml拷貝至resource目錄下的根目錄,然后在logbak.xml中,配置相關的log生成規則,log級別,以及日志路徑,log的字符編碼集,這個非常重要,因為剛開始用這個log記錄程序運行的信息時,發現它不支持中文log,后來經查名,需要配置相關的log編碼才可以正確記錄對應的信息。一個通用的配置如下:?
Xml代碼???<!--?Logback?configuration.?See?http://logback.qos.ch/manual/index.html?-->?? <configuration?scan="true"?scanPeriod="10?seconds">?? ???? ??<!--?Simple?file?output?-->?? ??<appender?name="FILE"?class="ch.qos.logback.core.rolling.RollingFileAppender">?? ????<!--?encoder?defaults?to?ch.qos.logback.classic.encoder.PatternLayoutEncoder?-->?? ????<encoder>?? ????????<pattern>?? ????????????[?%-5level]?[%date{yyyy-MM-dd?HH:mm:ss}]?%logger{96}?[%line]?-?%msg%n?? ????????</pattern>?? ????????<charset>UTF-8</charset>?<!--?此處設置字符集?-->?? ????</encoder>?? ?? ????<rollingPolicy?class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">?? ??????<!--?rollover?daily?配置日志所生成的目錄以及生成文件名的規則?-->?? ??????<fileNamePattern>logs/mylog-%d{yyyy-MM-dd}.%i.log</fileNamePattern>?? ??????<timeBasedFileNamingAndTriggeringPolicy?? ??????????class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">?? ????????<!--?or?whenever?the?file?size?reaches?64?MB?-->?? ????????<maxFileSize>64?MB</maxFileSize>?? ??????</timeBasedFileNamingAndTriggeringPolicy>?? ????</rollingPolicy>?? ?? ?? ????<filter?class="ch.qos.logback.classic.filter.ThresholdFilter">?? ??????<level>DEBUG</level>?? ????</filter>?? ????<!--?Safely?log?to?the?same?file?from?multiple?JVMs.?Degrades?performance!?-->?? ????<prudent>true</prudent>?? ??</appender>?? ?? ?? ??<!--?Console?output?-->?? ??<appender?name="STDOUT"?class="ch.qos.logback.core.ConsoleAppender">?? ????<!--?encoder?defaults?to?ch.qos.logback.classic.encoder.PatternLayoutEncoder?-->?? ??????<encoder>?? ??????????<pattern>?? ??????????????[?%-5level]?[%date{yyyy-MM-dd?HH:mm:ss}]?%logger{96}?[%line]?-?%msg%n?? ??????????</pattern>?? ??????????<charset>GBK</charset>?<!--?此處設置字符集?-->?? ??????</encoder>?? ????<!--?Only?log?level?WARN?and?above?-->?? ????<filter?class="ch.qos.logback.classic.filter.ThresholdFilter">?? ??????<level>WARN</level>?? ????</filter>?? ??</appender>?? ?? ?? ??<!--?Enable?FILE?and?STDOUT?appenders?for?all?log?messages.?? ???????By?default,?only?log?at?level?INFO?and?above.?-->?? ??<root?level="INFO">?? ????<appender-ref?ref="FILE"?/>?? ????<appender-ref?ref="STDOUT"?/>?? ??</root>?? ?? ??<!--?For?loggers?in?the?these?namespaces,?log?at?all?levels.?-->?? ??<logger?name="pedestal"?level="ALL"?/>?? ??<logger?name="hammock-cafe"?level="ALL"?/>?? ??<logger?name="user"?level="ALL"?/>?? </configuration>??
2,在application.properties中,指定log文件的加載路徑,已經配置通用的log日志級別:?
Java代碼???#指定log的配置文件,以及記錄Spring?Boot的log級別?? logging.config=logback.xml?? logging.level.org.springframework.web:?INFO ?
(四)介紹下Spring Boot中幾個常用的注解,其中大部分都是來自Spring MVC的注解,這些注解使用的頻率一般都在90%之上。?
(1)@RestController和@Controller指定一個類,作為控制器的注解?
(2)@RequestMapping方法級別的映射注解,這一個用過Spring MVC的小伙伴相信都很熟悉?
(3)@EnableAutoConfiguration和@SpringBootApplication是類級別的注解,根據maven依賴的jar來自動猜測完成正確的spring的對應配置,只要引入了spring-boot-starter-web的依賴,默認會自動配置Spring MVC和tomcat容器?
(4)@Configuration類級別的注解,一般這個注解,我們用來標識main方法所在的類?
(5)@ComponentScan類級別的注解,自動掃描加載所有的Spring組件包括Bean注入,一般用在main方法所在的類上?
(6)@ImportResource類級別注解,當我們必須使用一個xml的配置時,使用@ImportResource和@Configuration來標識這個文件資源的類。?
(7)@Autowired注解,一般結合@ComponentScan注解,來自動注入一個Service或Dao級別的Bean?
(8)@Component類級別注解,用來標識一個組件,比如我自定了一個filter,則需要此注解標識之后,Spring Boot才會正確識別。?
ok,本篇的講解,就到此結束,這些都是項目工程的基礎知識,了解這些,有助于我們快速的上手一個Spring Boot應用。?
(一)一個Maven+Spring Boot項目基本的包結構形式?
(二)一個簡單的在Spring Boot項目集成安全控制?
(二)如何在Spring Boot中記錄log日志?
(四)Spring Boot中幾個常用注解介紹?
ok下面開始正題:?
(一)先看下,官網給出的一個簡單的包結構組成:?
Java代碼???
? ? ?
需要注意的地方如下:?
1,在src/main/java包下的第一層結構中,是必須放一個含有main方法的主啟動的類,而且只能有一個main方法,如果再出現其他的main方法,在使用maven編譯打包時,會報編譯錯誤,當然在src/test/java包下,可以出現多個,但建議最好使用Junit進行單元測試.?
? ? 這個main方法啟動,就會啟動內嵌的tomcat或jetty容器,然后加載所有需要加載的或掃描的類或資源文件。上篇博客中,散仙為了測試方便,是直接在當前的Conroller中,啟動了一個測試服務,這樣做適合單獨調試,如果是生產環境下的啟動方法,則是散仙前面所講的,在java包的根目錄下建立一個main方法類,負責啟動所有的資源。?
在本例中,散仙的main代碼如下:?
Java代碼???
(二)關于在Spring Boot的配置簡單的安全訪問控制,這一點非常容器,我們只需要做如下二步,即可。?
1,在pom文件中,引入spring-boot-starter-security的maven依賴。?
Xml代碼???
Java代碼???
?
當然這只是,一個初級的配置,更復雜的配置,可以分不用角色,在控制范圍上,能夠攔截到方法級別的權限控制。?
(三)日志的重要性,不言而喻,Spring Boot支持大部分的log配置,其中包括:?
(1)java util logging?
(2)log4j?
(3)log4j2?
(4)logbak?
默認的情況下spring boot會選擇logback作為日志記錄的載體,當然要想它正常的工作,需要依賴 Commons Logging, Java Util Logging, Log4J 或 SLF4J,相信大部分同學都是選擇使用log4j.properties作為我們的日志配置和管理,但是散仙在Spring Boot中一直沒有測試集成成功,所以就放棄使用log4j.properties作為日志載體,而是選擇了Spring Boot推薦的logbak作為日志的配置文件,用過之后感覺也不錯。?
使用步驟:?
1,將logbak.xml拷貝至resource目錄下的根目錄,然后在logbak.xml中,配置相關的log生成規則,log級別,以及日志路徑,log的字符編碼集,這個非常重要,因為剛開始用這個log記錄程序運行的信息時,發現它不支持中文log,后來經查名,需要配置相關的log編碼才可以正確記錄對應的信息。一個通用的配置如下:?
Xml代碼???
Java代碼???
(1)@RestController和@Controller指定一個類,作為控制器的注解?
(2)@RequestMapping方法級別的映射注解,這一個用過Spring MVC的小伙伴相信都很熟悉?
(3)@EnableAutoConfiguration和@SpringBootApplication是類級別的注解,根據maven依賴的jar來自動猜測完成正確的spring的對應配置,只要引入了spring-boot-starter-web的依賴,默認會自動配置Spring MVC和tomcat容器?
(4)@Configuration類級別的注解,一般這個注解,我們用來標識main方法所在的類?
(5)@ComponentScan類級別的注解,自動掃描加載所有的Spring組件包括Bean注入,一般用在main方法所在的類上?
(6)@ImportResource類級別注解,當我們必須使用一個xml的配置時,使用@ImportResource和@Configuration來標識這個文件資源的類。?
(7)@Autowired注解,一般結合@ComponentScan注解,來自動注入一個Service或Dao級別的Bean?
(8)@Component類級別注解,用來標識一個組件,比如我自定了一個filter,則需要此注解標識之后,Spring Boot才會正確識別。?
ok,本篇的講解,就到此結束,這些都是項目工程的基礎知識,了解這些,有助于我們快速的上手一個Spring Boot應用。?
總結
以上是生活随笔為你收集整理的Spring Boot开发之流水无情(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 沙漠之旅(二维dp)
- 下一篇: 问题:二进制数中1的个数。