Spring5学习笔记(一)Spring入门HelloWorld

Spring系列专栏,之后的日子会持续发布,有兴趣的小伙伴可以关注收藏哦!
Spring系列教程

一、简介

Spring官网
Spring官方下载地址

Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。

  • 目的:解决企业应用开发的复杂性
  • 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能
  • 范围:任何Java应用

Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。


Spring的初衷:

  1. JAVA EE开发应该更加简单。
  2. 使用接口而不是使用类,是更好的编程习惯。Spring将使用接口的复杂度几乎降低到了零。
  3. 为JavaBean提供了一个更好的应用配置框架。
  4. 更多地强调面向对象的设计,而不是现行的技术如JAVA EE。
  5. 尽量减少不必要的异常捕捉。
  6. 使应用程序更加容易测试。

Spring的目标:

  1. 可以令人方便愉快的使用Spring。
  2. 应用程序代码并不依赖于Spring APIs。
  3. Spring不和现有的解决方案竞争,而是致力于将它们融合在一起。

Spring的基本组成:

  1. 最完善的轻量级核心框架。
  2. 通用的事务管理抽象层。
  3. JDBC抽象层。
  4. 集成了Toplink, Hibernate, JDO, and iBATIS SQL Maps。
  5. AOP功能。
  6. 灵活的MVC Web应用框架。

优点:

  1. JAVA EE应该更加容易使用。
  2. 面向对象的设计比任何实现技术(比如JAVA EE)都重要。
  3. 面向接口编程,而不是针对类编程。Spring将使用接口的复杂度降低到零。(面向接口编程有哪些复杂度?)
  4. 代码应该易于测试。Spring框架会帮助你,使代码的测试更加简单。
  5. JavaBean提供了应用程序配置的最好方法。
  6. 在Java中,已检查异常(Checked exception)被过度使用。框架不应该迫使你捕获不能恢复的异常。

缺点

  1. 使用了大量的反射机制,反射机制非常占用内存。

二、入门实例


ioc.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">

	<!-- 注册一个Person对象,Spring会自动创建这个Person对象 -->
	<!-- 
		一个Bean标签可以注册一个组件(对象、类)
		class:写要注册组件的全类名
		id:这个对象的唯一标识
	 -->
	 <bean id = "person01" class="com.dong.Person">
	 <!-- 使用property标签为Person对象赋值
	 		name = "lastName" : 指定属性名
	 		value = "李四"  : 为该属性赋值
	  -->
	 	<property name="lastName" value="李四"></property>
	 	<property name="age" value="20"></property>
	 	<property name="gender" value="男"></property>
	 	<property name="email" value="lisi@qq.com"></property>
	 </bean>

</beans>

Person实体类

public class Person {

	private String lastName;
	private Integer age;
	private String gender;
	private String email;
	
	
	
	@Override
	public String toString() {
		return "Person [lastName=" + lastName + ", age=" + age + ", gender=" + gender + ", email=" + email + "]";
	}
	public String getLastName() {
		return lastName;
	}
	public void setLastName(String lastName) {
		this.lastName = lastName;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
		
}

创建Junit Test测试类

import static org.junit.jupiter.api.Assertions.*;

import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.dong.Person;

class IOCTest {

	/**
	 * 从容器中拿到这个组件
	 */
	@Test
	void test() {
		//ApplicationContext:代表IOC容器
		//ClassPathXmlApplicationContext:当前应用的xml配置在classpath内路径下
		//创建ioc容器
		ApplicationContext application = new ClassPathXmlApplicationContext("ioc.xml");
		
		//容器帮我们创建好对象了,根据xml中的id拿值
		Person person = (Person)application.getBean("person01");
		
		System.out.println(person);
		
	}

}

运行结果
在这里插入图片描述

三、HelloWorld入门总结


先导包在创建配置文件


类图标出现s表明Spring接管了该类


在这里插入图片描述
new ClassPathXmlApplicationContext(“ioc.xml”); ioc容器的位置文件在类路径下
new FileSystemXmlApplicationContext(“D://ioc.xml”); ioc容器的配置路径在磁盘路径下


容器中对象的创建在容器创建完成的时候就已经创建好了;
即:ApplicationContext application = new ClassPathXmlApplicationContext(“ioc.xml”);


同一个组件在ioc容器中时单实例的,即只会创建一份


如果获取容器中没有的组件,则会报错

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'xxx' available

ioc容器在创建这个组件对象的时候,(property)会利用setter方法为javaBean的属性赋值

javaBean的属性名是由->getter/setter方法中set后面那一串字符串首字母小写得到的
在这里插入图片描述


觉得写的不错的小伙伴,可以点赞关注和收藏哦,博主会持续发布与大家共同学习!

Java学习路线目录索引
在这里插入图片描述

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值