Spring学习之路-从入门到放弃
后台框架是真难入门啊!!!IDE的使用,环境的搭建,框架下载,上手,每一步都恶心人。
花了整整两天,才学会用idea,并且初步了解了maven(TM就是一个npm),然后跟着下载了对应的jar包,搭建了一个简单的servlet。
这里暂时记录一下遇到的坑。
首先,为什么放弃Myeclipse?这个IDE只能下破解版的,界面是真的丑,下载的那些主题也特别僵硬。最重要的是,由于版本太低,只能用低版本的jdk,经常报一个version 51***的error,只能把jdk调到1,6,对应maven、spring都要调低版本,麻烦的很。
后来就尝试换了idea,好在上手还算快,但是也有几个巨坑:
1、idea中的project对应Myeclipse中的workspace,而module才是project,所以在新建一个project的时候,一定要在Project location再添加一个文件夹
2、新建maven项目需要选准了
3、pom.xml中的依赖版本一定要注意jdk兼容问题!!!!
4、记得将java文件目录设置为资源根目录,右键文件夹:
5、如果maven中配置了对应框架的依赖还是报错:could not resolve symbol...直接File - Invalidate Cache,重启就好了
目前,我只是写了个超级简单的servlet,目录如图:
基本上都是IDE帮我弄好了文件夹,那个s是新建的,里面的Servlet.java是写的一个servlet类。web.xml中的mapping需要自己配置,IDE不会管的。
到现在还是没明白怎么开始用Spring,官网是很全,但是我暂时没找到像HelloWorld之类的萌新入门案例。
总之一句话,写代码真是件简单的事。
Two hours later...
绝望的我已经开始搜索这个:
好在还真有超级超级简单的案例,根据案例,创建一个弱智类HelloWorld:
package s;
public class HelloWorld{
private String message;
private String name;
public void setName(String name) { this.name = name; }
public void setMessage(String message){ this.message = message; }
public void getMessage(){ System.out.println("Your Message : " + message); }
public void printName(){ System.out.print("Name : " + name); }
}
然后在同一个包下创建了另外一个厉害类:
package s;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MainApp {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
obj.getMessage();
obj.printName();
}
}
这两个类联系起来需要靠一个xml的配置文件,就像servlet类将servlet处理文件与web请求联系起来一样,这里新建一个beans.xml关联两个java类;
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="helloWorld" class="s.HelloWorld">
<property name="message" value="Hello World!"/>
<property name="name" value="春妹子"/>
</bean>
</beans>
(xml文件的开头竟然不支持缩进)
最后运行那个MainApp,结果如图:
由于配置比较简单,所以可以很简单粗暴的去理解:
1、id作为一个标识符去让getBean方法进行获取对应的类
2、class是一个路径的完整映射,类似于servlet配置中的<servlet-class>
3、而property是实例化类后传入的变量,name、value对应key与value
我是这样理解的,配置了beans.xml后,所有bean中的class映射的类都将在初始化时被实例化并保存在某个特殊的地方,保存方式类似于Map,其实中key就是那个id。
可以通过context.getBean()方法获取,传入id可以得到对应的实例,返回的大概是一个Object类型,所以需要进行强制类型转换。
之后,我对代码做了少许调整:
package s;
public class HelloWorld{
private String name;
private int uid;
public void setName(String name) { this.name = name; }
public void printName(){
System.out.println("Name : " + name + uid + "号");
uid++;
}
}
在类中加入了一个计数器,然后主函数代码修改如下:
public class MainApp {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
ApplicationContext context2 = new ClassPathXmlApplicationContext("Beans.xml");
HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
HelloWorld obj2 = (HelloWorld) context2.getBean("helloWorld");
HelloWorld obj3 = (HelloWorld) context.getBean("helloWorld");
obj.printName(); // Name : 春妹子0号
obj.printName(); // Name : 春妹子1号
obj2.printName(); // Name : 春妹子0号
obj3.printName(); // Name : 春妹子2号
}
}
通过输出可以判定这样的事实:
1、每一个context保存的类都是唯一的,可以简单理解成单例
2、可以通过再次调用new Class***来获取一个新的容器,并重新生成所有对应类
所以这就是传说中的注入吗?nice,nice,我也是了解spring框架的人了!
Spring学习之路-从入门到放弃的更多相关文章
- [精品书单] C#/.NET 学习之路——从入门到放弃
C#/.NET 学习之路--从入门到放弃 此系列只包含 C#/CLR 学习,不包含应用框架(ASP.NET , WPF , WCF 等)及架构设计学习书籍和资料. C# 入门 <C# 本质论&g ...
- C#/.NET 学习之路——从入门到放弃
原文链接地址:http://blog.liuhaoyang.me/dotnet/2016/11/25/csharp-books/ 向架构师大步迈进的书单 C# 入门 <C# 本质论> &l ...
- Spring学习之路——简单入门HelloWorld
Spring简单介绍 Spring是一个提供了解决J2EE问题的一站式框架. Spring的核心是反转控制,通过配置文件完成业务对象之间的依赖注入,他鼓励一个良好的习惯,就是注入对接口编程而不是对类编 ...
- 『NiFi 学习之路』入门 —— 下载、安装与简单使用
一.概述 "光说不练假把式." 官网上的介绍多少让人迷迷糊糊的,各种高大上的词语仿佛让 NiFi 离我们越来越远. 实践是最好的老师.那就让我们试用一下 NiFi 吧! 二.安装 ...
- Spring学习之路-从放弃到入门
AOP:方法拦截器 IOC:类管理容器 主要讲讲这一天看Spring视频学到的东西,以下的叫法全是自创的. 1.类实例管理容器 关于Spring,首先是对类的管理,在常规情况,生成一个类需要调用new ...
- Spring学习之路-SpringBoot简单入门
简单讲SpringBoot是对spring和springMVC的二次封装和整合,新添加了一些注解和功能,不算是一个新框架. 学习来源是官方文档,虽然很详细,但是太墨迹了… 地址:https://doc ...
- Web 前端开发学习之路(入门篇)
字数1374 阅读4622 评论0 喜欢49 以前学习过一段时间的web前端开发,整理了一些我看过的/我认为比较好的学习资料(网站.书籍).不要问我为啥没有进阶版,我只是一条产品汪而已,求轻喷.== ...
- python 零基础学习之路 02-python入门
不知不觉学习python已经两个月了,从一开始不知道如何对print的格式化,到现在可以手撸orm,这期间真的是 一个神奇的过程.为了巩固自己的基础知识,为后面的拓展埋下更好的伏笔,此文当以导师的博客 ...
- 学习 Vue ,从入门到放弃
最近项目刚完成,手上工作稍微轻松些,准备储备下技术,为未来挑战做好准备. 之前项目用的较多的是angulajs,不过版本较老,还停留在1.5x系,虽然结合了webpack,es2015等前沿技术,但理 ...
随机推荐
- 第三天:JavaScript的DOM对象和DOM操作HTML
1. DOM操作HTML 1)注意:绝对不要在文档加载完成之后使用docment.write().这样会覆盖原来的文档 <body> <p>hello</p> &l ...
- [ASE][Daily Scrum]11.05
在昨天的课程之后经过讨论进行了初步的分工,并制定出了我们的一个两周计划. 尚没有和老师讨论,已经询问了时间没有收到回复,等老师那边讨论过后我会在更新这个部分. 第一阶段的目标是用户能够在一个空白的地图 ...
- 二、RHCSA试题解析
一.设置YUM仓库 YUM的软件库源地址为:http://content.example.com/rhel7.0/x86_64/dvd,将此配置为操作系统的默认软件仓库. 方法一(修改配置文件): v ...
- 在windows10上创建ASP.NET mvc5+Memcached服务
感谢两位两位大佬: https://blog.csdn.net/l1028386804/article/details/61417166 https://www.cnblogs.com/running ...
- .net4.0 请求HTTPS出错:未能创建 SSL/TLS 安全通道
两种方法: 1.在代码中修改 ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;// SecurityProtocol ...
- 【062新题】OCP 12c 062出现大量新题-15
choose one In your Oracle 12c database, you plan to execute the command: SQL> CREATE TABLESPACE t ...
- 小猴打架(luogu4430)(数论+生成树计数)
一开始森林里面有\(N\)只互不相识的小猴子,它们经常打架,但打架的双方都必须不是好朋友.每次打完架后,打架的双方以及它们的好朋友就会互相认识,成为好朋友.经过\(N-1\)次打架之后,整个森林的小猴 ...
- D14——C语言基础学PYTHON
C语言基础学习PYTHON——基础学习D14 20180919内容纲要: 1.html认识 2.常用标签 3.京东html 4.小结 5.练习(简易淘宝html) 1.html初识(HyperText ...
- socket练习:FTP
FTP 练习收获: 1,类型转换 2,进度条实现: 3,print 输出不换行的方法: print输出 不换行的方法: 方法一: import sys sys.stdout.write(" ...
- android stdio 编译项目报Error:Failed to find target with hash string 'android-24
android stdio 编译项目报Error:Failed to find target with hash string 'android-24 查看已有的SDK 设置项目的sdk为 25 an ...