当前位置: 首页 > news >正文

java web开发(第一个spring程序)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        提到java web编程,好像spring就躲不开了。一般认为,spring有两个特征,分别是ioc、aop。两个英文单词的中文解释都比较拗口,一个称之为控制反转,一个是面向切面。对于刚刚学习spring的同学,其实没有必要纠结里面的技术细节,可以把学习重点放在具体的应用上面。比如,可以用spring做一到两个demo程序,验证一下spring是怎么运转的即可。

        使用IDEA学习spring也比较方便。可以借助于IDEA首先了解下spring是怎么开发的。

1、创建工程,分别选中“Spring”和“Web Application”

2、工程名设置为Hello,这样工程就创建好了,IDEA也默认添加好了spring lib库

 

3、创建spring配置文件,命名为applicationContext.xml

        执行过程中,可能遇到这样的告警提示,

        不用担心,直接点击“Configure application context”,选择“create new application context”即可,

         直接点击ok即可。

5、补充完整applicationContext.xml文件

<?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="teacher" class="Teacher">
        <property name="teacherNo" value="666666"></property>
        <property name="teacherName" value="Tom"></property>
    </bean>
</beans>

 

6、添加Teacher.java源文件,放在src目录下,

public class Teacher {
    private int teacherNo;
    private String teacherName;

    public int getTeacherNo() {
        return teacherNo;
    }

    public void setTeacherNo(int teacherNo) {
        this.teacherNo = teacherNo;
    }

    public String getTeacherName() {
        return teacherName;
    }

    public void setTeacherName(String teacherName) {
        this.teacherName = teacherName;
    }

    @Override
    public String toString() {
        return "Teacher{" +
                "teacherNo=" + teacherNo +
                ", teacherName='" + teacherName + '\'' +
                '}';
    }
}

         注意这个Teacher类里面的变量和applicationContext.xml里面提到的内容,其实是一致的。两者都有teacherNo和teacherName,而且在applicationContext.xml里面,还添加了默认值666666和Tom,这个需要注意一下。

7、添加测试文件test.java

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class test {
    public static void main(String args[]) {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        Teacher teacher = (Teacher) context.getBean("teacher");
        System.out.println(teacher.toString());
    }
}

         这个test.java值得好好看看。开始两个import语句主要是引用,从内容上看,引用的都是springframework的部分。正式的内容从test.main函数开始。首先,读取applicationContext.xml文件。其次,从文件中找到“teacher”生成一个teacher实例。最后,调用toString重载函数。

        这段代码最精彩的地方,其实就在于整个代码中没有一个new操作,仅仅是读取配置文件,就实现了类实例的创建。这里面有什么好处呢,我倒是想到了一个。比如说,如果之前使用的数据库是mysql,某一天有一个客户说他们习惯了用oracle,oracle比较稳定。那么,这个时候需要做的就是在applicationContext.xml文件中把class换一下就好了,代码不需要做任何的修改。

8、代码编译调试

        直接选中test.java,右击选中“Run test.main()”,

         如果没有什么问题的话,就可以看到这样的打印,

         可以故意制造一个错误,比如去除xml文件中bean的相关内容,那么执行会出现什么错误呢?可以用<!-- -->来注销bean代码观察看看。

 

相关文章:

  • 华为ensp模拟校园网/企业网实例(XX学校网络设计与实现)
  • Spring项目结构、基于XML和注解的IoC
  • NOIP201005机器翻译 题解
  • 解读ICLR 2021:DoodlerGAN创意草图开山之作
  • 稀疏表示理论(与指静脉识别)
  • 遥感航拍影像25篇CVPR39个数据集
  • 【cmake实战十一】com组件方法的简单实现
  • RDP直线圆弧分割算法
  • 为什么有的python内置函数怎么就一个pass?
  • 主从复制 读写分离
  • flink-taskmanager内存计算
  • 大数据复习(day03)
  • C++ 优先队列 priority_queue 使用篇
  • 同事嫌我改Bug慢,原来是没掌握这些代码Debug技巧
  • 图文讲解带你拿捏MyBatis(一)——MyBatis入门
  • 2017-08-04 前端日报
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • Date型的使用
  • go append函数以及写入
  • nginx 配置多 域名 + 多 https
  • Selenium实战教程系列(二)---元素定位
  • Shell编程
  • vue自定义指令实现v-tap插件
  • 成为一名优秀的Developer的书单
  • 分享一份非常强势的Android面试题
  • 后端_ThinkPHP5
  • 解决iview多表头动态更改列元素发生的错误
  • 深度学习入门:10门免费线上课程推荐
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 数据科学 第 3 章 11 字符串处理
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 原生 js 实现移动端 Touch 滑动反弹
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 终端用户监控:真实用户监控还是模拟监控?
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • mysql面试题分组并合并列
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • #100天计划# 2013年9月29日
  • #define、const、typedef的差别
  • #if #elif #endif
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (BFS)hdoj2377-Bus Pass
  • (二)PySpark3:SparkSQL编程
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (区间dp) (经典例题) 石子合并
  • (五)网络优化与超参数选择--九五小庞
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • . Flume面试题
  • .NET CORE Aws S3 使用
  • .Net FrameWork总结
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器