上篇散仙写了一个很简单的入门级的Spring Boot的例子,没啥技术含量,不过,其实学任何东西只要找到第一个突破口,接下来的事情就好办了,人最怕什么? 我想莫过于干一件事情,没有下手的地方了,而当你一旦找到了这感受,就能够很喜悦的顺藤摸瓜般的探索你强烈想探索求知的某种事物了,这种冥冥之中玄而又玄的感受是什么?回想一下:
(1) 当你把第一个某种编程语言的Hello World的例子,成功的运行在一个IDE中
(2) 当你第一次从老家出发到达了某个你从未涉足过的地方
(3) 当你成功的完成了第一次网购
一切的不相关的事物之间的,其实都有相似的学习历程,正是所谓的举一反三,万法归宗!
关于Spring Boot这块,其实里面涉及的内容很是多也很是灵活,散仙的项目中用到的模块也只是冰山一角,不可能彻底覆盖全部有关的模块,彻底是为了项目而用技术,不是为了技术而诞生了这个项目,因此此次记录的心得,彻底是项目有关的,而不是Spring Boot一个学习教程,这一点,但愿各位看官明白,若是想专攻学习Spring Boot,推荐点击官网更详细的教程
一个项目是由多种不一样层面的技术组成的,因此散仙不会只写有关Spring Boot方面的,虽然Spring Boot是主线。大多数状况下,都会集成多种不一样的技术,只有各自发挥本身擅长的优点,才能组合出最优的架构。
好了,多说了点废话,下面看下本篇记录Spring Boot的几个知识点:
(一)一个Maven+Spring Boot项目基本的包结构形式
(二)一个简单的在Spring Boot项目集成安全控制
(二)如何在Spring Boot中记录log日志
(四)Spring Boot中几个经常使用注解介绍
ok下面开始正题:
(一)先看下,官网给出的一个简单的包结构组成: css
Java代码 html
而后,看下散仙实际工做中的项目结构:
须要注意的地方以下:
1,在src/main/java包下的第一层结构中,是必须放一个含有main方法的主启动的类,并且只能有一个main方法,若是再出现其余的main方法,在使用maven编译打包时,会报编译错误,固然在src/test/java包下,能够出现多个,但建议最好使用Junit进行单元测试.
这个main方法启动,就会启动内嵌的tomcat或jetty容器,而后加载全部须要加载的或扫描的类或资源文件。上篇博客中,散仙为了测试方便,是直接在当前的Conroller中,启动了一个测试服务,这样作适合单独调试,若是是生产环境下的启动方法,则是散仙前面所讲的,在java包的根目录下创建一个main方法类,负责启动全部的资源。
在本例中,散仙的main代码以下: java
Java代码 web
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依赖。 redis
Xml代码 spring
2,在application.properties中,配置访问的用户名和密码 数据库
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编码才能够正确记录对应的信息。一个通用的配置以下: tomcat
Xml代码 安全
2,在application.properties中,指定log文件的加载路径,已经配置通用的log日志级别:
Java代码
(四)介绍下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应用。 下篇博客的内容会写: (1)如何在Spring Boot项目中集成Spring Loaded框架,来完成模块热加载和代码动态编译,有了这个东西,咱们开发的效率会更加高效,大部分状况下咱们改了一个类或方法的代码以后,都不须要重启应用,由于Spring Loaded会定时从新编译并加载代码。 (2)如何在Spring Boot项目中集成Velocity,Spring Boot支持多种模板引擎,包括 1,FreeMarker 2,Groovy 3,Thymeleaf 4,Velocity 5,JSP (Spring Boot官方不推荐) 咱们能够根据熟悉程度来选择本身喜欢的引擎。