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

举报
Code皮皮虾 发表于 2021/08/22 13:42:33 2021/08/22
【摘要】 Spring5学习笔记(一)Spring入门HelloWorld

一、简介

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后面那一串字符串首字母小写得到的
在这里插入图片描述


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

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。