springboot初探

简介: 前人说过要对新技术保持好奇。对于游戏开发来讲,前端表现几年会有大的技术革新,还记得flash红火时,刚毕业就敢要入万的月薪。现在过气了,3d开始流行,h5也要占半边天。反而服务端,就算你拿着五年前的技术,也不大会被市场淘汰,游戏业务还是很窄的 窄的原因,我想是业务需求太小,有多少游戏会出生,能有多少上线,又有几款成大作。刚开始还可能要好好干,好好优化,结果一款款开发的游戏,还没上线都挂了。心凉了。技术架构根本没来及在线上验证,在上线前都是完美的,牛B的,自大了很少有一款产品,大作,并且还能持久性的前进。技术能有保持同步的迭代,进化的环境很少

前引


前人说过要对新技术保持好奇。对于游戏开发来讲,前端表现几年会有大的技术革新,还记得flash红火时,刚毕业就敢要入万的月薪。现在过气了,3d开始流行,h5也要占半边天。

反而服务端,就算你拿着五年前的技术,也不大会被市场淘汰,游戏业务还是很窄的 窄的原因,我想是业务需求太小,有多少游戏会出生,能有多少上线,又有几款成大作。

刚开始还可能要好好干,好好优化,结果一款款开发的游戏,还没上线都挂了。心凉了。技术架构根本没来及在线上验证,在上线前都是完美的,牛B的,自大了

很少有一款产品,大作,并且还能持久性的前进。技术能有保持同步的迭代,进化的环境很少

spring boot是什么


微服务现在很火,有什么技术大会,这是必说的话题。spring boot作为微服务新一代实现技术,也就少不了大师们的推广。

war时代的结束

这是最近听到让我耳目一新的话。

太好了,最讨厌了war了,最不想写web了

原以为boot是个很新的东西,看了下介绍原来还是spring,只是更方便的使用spring

spring boot没有引入任何形式的代码生成,而是利用spring 4的条件化配置特性,以及Maven和Gradle提供的传送依赖解析,以此实现spring应用程序上下文里的自动配置 从本质上来说,spring boot就是spring,它做了那些没有它你自己也会去做的spring bean配置

原来自己开发一个spring工程 ,你得去拷贝一份application.xml模块,来修改配置一下,而现在不需要你自己动手去处理这个模块xml了。

现在技术发展都是向自动化,智能化发展。

原来ant时代,也一样去搞一份模板配置,修修改改。后面推出maven,不要再去处理模板配置了。

项目中引入spring boot的原因


  1. 可以直接jar运行,这其实是最主要的原因。
    游戏项目是需要提供一些api给平台方的,这些api是由一些外围项目提供,如gate,charge项目,这些项目只要提供restfull web api,难免不用到web project
    项目是基于maven的,我希望分很多模块去完成一个项目,而不是要分很多的project。因为很多基础代码公用,(千万别建议拷贝jar包这种远古时代才有的方式),当然可以install到代码库里,但游戏项目都是小型项目,没有很多团队一起协同,就几个人,随时都可能会去补充公用类,分模块是最适合的。如果gate,charge就是一个模块多好

  2. 与时代同步
    游戏后端技术,如果不外面走走,几年不更新,一样能胜任。
    就像有些网站一样,直接servlet也能胜任,多年不技术更新也一样能迎合市场需求
    有时感觉是为了技术而技术,但我们总是要走出去的,不能跟这个时代脱节,不能说struts,spring mvc最底层还是包装servlet,就不去了解,学习。

项目改造


原来的gate是用servlet做的,鉴于以上的原因现在改成boot

找一个简单的boot demo运行一下,感受一个boot的神奇。

pom里面加上依赖

org.springframework.boot
        spring-boot-starter-parent
        1.4.3.RELEASE
         /> 
            org.springframework.boot
            spring-boot-starter-web
            org.springframework.boot
            spring-boot-starter-test
            test

再加上一个controller

@RestController
public class UserController {
    @RequestMapping(value = "/users/{username}",method = RequestMethod.GET)
    public String getUser(@PathVariable String username, @RequestParam String pwd){
        return "Welcome,"+username;
    }
}

一个入口类

@Configuration
@EnableAutoConfiguration
public class App 
{
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

Run App,就可以通过http://localhost:8080/users/jackchu 访问了

完整代码:https://github.com/zhuxingsheng/springbootdemo

就是这么神奇,简单的不能再简单了。就这样,一个web项目就行了。不再需要以前的xml,properties配置,不再需要运行一个web容器

老的servlet项目,只需要在入口类上加个@ServletComponentScan注解,就能识别以前写的servlet,太不可想象。

程序员未来也要失业了,受不了这技术进步的速度。

虽然很方便,但对于被虐待惯的,不被虐待真是不习惯。以前写了很多的配置,再都不要了,还真是找不到方向,怎么使用现在简便的方式处理业务需求。

怎么把原来spring的xml bean配置改成boot方式?

@Configuration
@ImportResource(locations={"classpath:application-xxx.xml"})
public class Config {
}

这样就引入了自定义的xml配置。

spring boot推荐使用thymeleaf模板引擎,又有新的技能要学习;

这个世界永远不变的就是变化,人人都知道的真理,但真变化了,有时真的头疼

很多公司不升级技术,反正都能满足业务需求,以不变应万变。

Thymeleaf是一个XML/XHTML/HTML5模板引擎,它的语法要求比html严格些,以前写的html都有各样的问题

Element type “myelement” must be followed by either attribute specifications, “>” or "/>
onload="load()"
Uncaught ReferenceError: load is not defined

JS中有些特殊字符需要转义时,直接用

  1. 简单方便快捷。
1.  language="javascript" th:inline="javascript">
2. //
3. 
4. //]]>
5.

结束


现在已经把老项目改完成了。

有惊喜也有深坑,现在的技术真是越来越简捷,这背后的原理我想是约定优于配置

你需要遵循约定,才能如鱼得水;要学习的也就是技术的约定,顺势而为,剑人合一


目录
相关文章
|
Dubbo Java 应用服务中间件
91.【SpringBoot-03】(四)
91.【SpringBoot-03】
65 0
|
druid Java 数据库连接
89.【SpringBoot-02】(九)
89.【SpringBoot-02】
80 0
|
15天前
|
Java
SpringBoot使用汇总
SpringBoot使用汇总
25 1
SpringBoot使用汇总
|
4月前
|
XML Java 数据格式
SpringBoot详解
SpringBoot详解
41 0
|
5月前
|
Java Spring
|
6月前
|
XML 监控 Java
springboot
springboot “【5月更文挑战第29天】”
35 1
|
Java 数据格式 微服务
springboot系列知识
Spring Boot都很熟悉了,再重新认识学习一遍。
82 0
|
JSON JavaScript Java
87.【SpringBoot-01】(七)
87.【SpringBoot-01】
59 0
|
Java 数据库 数据安全/隐私保护
89.【SpringBoot-02】(八)
89.【SpringBoot-02】
39 0
|
XML Java 应用服务中间件
SpringBoot(三)
SpringBoot(三)
147 0
SpringBoot(三)
下一篇
无影云桌面