第一节
Spring技术的3个大的发展历史阶段
- spring1.x版本阶段
所有的依赖关系,都是使用xml进行描述——不管是IOC还是AOP的关系都是这样处理,都是历史背景决定的。
- spring2.x版本阶段
伴随着JDK1.5而来,它支持注解,使得xml配置文件的体积大大减小了,配置文件的数量也大大减少了。争论了很久 ,最终统一了使用方式:一些系统的配置使用xml完成,一些业务逻辑配置使用注解。
- spring3.x-spring4.x版本阶段
彻底的摆脱xml配置,完全使用注解+java类的形式。目前项目中还没有完全使用该种方式,以后纯使用该方式的机会也不大,因为springboot技术出来了,它就是建立在0配置技术之上的一种技术——换句话说,springboot改变了我们使用spring的姿势。
第二节
使用注解+javabean的方式实现Bean的注入
- 需要声明,该节内容并非springboot内容,而是演示如何零配置实现我们的IOC注入,注解+javabean的形式
- 程序的实现
- 首先建立一个工程,我们在这里建立一个再普通不过的java工程,工程结构如如:
- 编写相应的dao,service,test等类,另外还要编写一个java配置类
- 测试
执行MainTest,查看是否能够执行到UserDao的被调用的方法,测试成功。
4)备注
@Bean注解要求方法必须是public,返回值是注入要注入的对象的类型
第3节
创建我的第一个springboot工程
- 如何创建springboot工程?
- 创建一个普通的maven工程,然后手动将需要的springboot依赖添加进去即可
- 使用springboot官方网站来生成springboot工程的骨架,然后导入到IDE即可
- 使用springboot提供的一个IDE插件STS,该插件集成到我们的IDE中
- 使用第三种方式即STS创建我们的springboot工程
- 选择new-project-spring-spring starter project
2)填写工程基本信息,要求必须联网才能正常执行否则报连接错误的异常
3)创建工程,如果有需要的话在这里可以修改springboot的版本号
备注:
- 如果第一次创建工程的话,花费的时间会比较长,因为很多依赖需要下载。
- 本即可主要掌握使用STS插件创建springboot工程,另外需要注意必须联网该插件才能正常执行。
- Springboot2.0只支持JDK1.8以上的版本
- 随着官网http://start.spring.io上面版本的更改STS插件也会跟着更改版本信息。
- 简单讲解工程结构和引入的maven依赖包
第4节
编写我的第一个springboot应用程序
- 在上节工程springboothelloworld基础上编写程序
- 正式编写
- 修改pom.xml给定一个jar包的文件名称
- 编写pojo,dao,service,controller
这里编写的pojo,dao等所有组件跟之前springmvc工程中的所用注解或者编写流程一模一样,没有任何区别,参考代码。
- 测试
- 通过springboot的入口程序启动
- 通过java -jar xxx.jar来启动,可能受第一次影响占用8080,关闭eclipse即可
- 启动日志简单分析
可以看到,内置了8.5的tomcat,并且默认端口为8080.访问地址http://localhost:8080/getuser?id=1000
第5节
剖析springboot工程——工程结构
第一节 Spring技术的3个大的发展历史阶段
所有的依赖关系,都是使用xml进行描述——不管是IOC还是AOP的关系都是这样处理,都是历史背景决定的。
伴随着JDK1.5而来,它支持注解,使得xml配置文件的体积大大减小了,配置文件的数量也大大减少了。争论了很久 ,最终统一了使用方式:一些系统的配置使用xml完成,一些业务逻辑配置使用注解。
彻底的摆脱xml配置,完全使用注解+java类的形式。目前项目中还没有完全使用该种方式,以后纯使用该方式的机会也不大,因为springboot技术出来了,它就是建立在0配置技术之上的一种技术——换句话说,springboot改变了我们使用spring的姿势。
第二节 使用注解+javabean的方式实现Bean的注入
UserDao: UserService: SpringConfig: MainTest:
执行MainTest,查看是否能够执行到UserDao的被调用的方法,测试成功。 @Bean注解要求方法必须是public,返回值是注入要注入的对象的类型
第3节 创建我的第一个springboot工程
2)填写工程基本信息,要求必须联网才能正常执行否则报连接错误的异常 3)创建工程,如果有需要的话在这里可以修改springboot的版本号 备注:
第4节 编写我的第一个springboot应用程序
这里编写的pojo,dao等所有组件跟之前springmvc工程中的所用注解或者编写流程一模一样,没有任何区别,参考代码。
可以看到,内置了8.5的tomcat,并且默认端口为8080.访问地址http://localhost:8080/getuser?id=1000
第5节 剖析springboot工程——工程结构
在springboot目录结构中,遵循的原则就是“约定大于配置”,使得配置文件更加简化,容易维护,可以把它看成是行业标准。
第6节 剖析springboot工程——pom.xml文件
从该父依赖中继承了springboot工程必须的一些jar包,该父依赖是springboot工程中必不可少依赖,它也是区别普通mavven工程的一个特点。
例如,上午创建的工程为web工程,那么它就自动添加了如下一类,如图:
这是springboot帮我们提供的一个插件,该插件可以根据第5节讲到的约定目录帮助我们将工程打包成可执行的jar包或者war包,如果没有这个插件,我们必须手动写pom代码。
第7节 剖析springboot工程——入口类
默认情况,该入口类会在比较父级的目录中,因为它要扫描同级目录和所有的子目录中带有spring注解的类(需要在spring容器创建对象)。如果放到子目录中必须指定要扫描的包的路径,不推荐这样做,按默认即可,例如: 备注: Run方法中传入两个参数,第一个参数默认传入本类的class,也可以传入一个其他类,但是该类必须有SpringBootApplication注解。
该注解是springboot工程的核心注解,没了它运行不了,同时它也是一个组合注解。 如图是定义该注解的代码: 即一旦使用了该注解,等价于把上面所有的注解都使用上了。总之,使用了该注解以后这个入口类就是一个java配置类,并且有了自动配置功能,并且还有了自动扫包的功能。
根据上述描述,入口类由一个main方法启动,就会启动内嵌的tomcat或jetty容器,然后加载所有需要加载的或扫描的类或资源文件,进而初始化spring容器,完成对象的注入。
第8节 剖析springboot工程——可执行jar包和war包
备注:该配置文件是自动生成的,它里面指定了启动类,在执行java -jar命令的时候会自动加载该启动类。
将第3节课工程中pom.xml中的packaging值由原来的jar直接改为war,其他配置不做任何改变,然后打成war包,其结构如下: 备注:通过java -jar helloworld.war命令执行该war包,成功。但是非jsp的应用一般不建议打war包。
第9节 认识springboot工程的配置文件——application.properties文件
Application.properties和application.yml
为了满足个性化的需求,所以该框架提供了一个简单的配置文件,通过健值对的形式去配置自己的参数,并且这些健同application.properties名字一样,也是约定好的,springboot就可以自动读取这些键值对,不需要我们另外写程序完成。
server.port=8090 server.servlet.context-path=/helloworld
第10节 springboot工程的特点小结
第10节 自定义springboot启动时的banner图标
打开http://patorjk.com/software/taag输入自己想要的文字,免费帮我们只做一个banner字符样式,不支持中文字符,例如:
备注:
第11节 springboot自动配置的原理
当在pom.xml中一旦引入了某一个starter组件,那么就会在里找相应的自动配置类来实现自动配置。
打开一个XXAutoConfiguration的类,即可看到里面自动配置的实现过来,例如solr. 实现部分代码如下:
本质还是使用spring中的@Configration和@Bean两个注解实现了将SolrClient对象注入到spring容器。此时,我们就可以在我们的程序中直接使用@Autowired注入solrClient对象去使用了,因为它已经存在于spring容器中了。
第12节 关闭springboot的自动配置
一般情况下,不建议手动配置。
第13节 将springboot项目发布到独立的tomcat
不能。
因为该war包中缺少一个非常重要的文件——web.xml文件,所以外部tomcat在启动时无法知道该项目是一个标准的web项目,所以也就无法访问。备注:tomcat启动日志未看到springboot的banner图标。
这是跟上次失败实验的一个不同之处,说明tomcat已经将该项目进行了加载。 第14节 在springboot项目中配置MVC并使用jsp作为视图模板
freemarker或者thymeleaf等模板。
<dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency>
server.port=8080 server.servlet.context-path=/hellojsp server.servlet-path=/ spring.mvc.view.prefix=/jsp/ spring.mvc.view.suffix=.jsp 备注:
只需写一个简单的controller类和user.jsp即可,结构和内容如下:
第15节 使用@PropertySource读取外部资源文件
2.使用注解的方式来完成读取 1)在springboothelloworld工程中做测试,新建ReadProperties,编码如下: 备注:
|