阿坝藏族羌族自治州网站建设_网站建设公司_企业官网_seo优化
2025/12/28 18:27:37 网站建设 项目流程

HelloSpring

第一个Spring程序

创建一个Maven项目

  1. 创建一个Hello JavaBean
publicclassHello{privateStringstr;publicStringgetStr(){returnstr;}publicvoidsetStr(Stringstr){this.str=str;}@OverridepublicStringtoString(){return"Hello{"+"str='"+str+'\''+'}';}}
  1. 基于 XML 的配置元数据

官方配置文件:

https://docs.spring.io/spring-framework/reference/core/beans/basics.html#beans-factory-xml https://docs.spring.io/spring-framework/docs/5.2.0.RELEASE/spring-framework-reference/core.html#beans-basics

一个感觉的XML配置文件是这样的

<?xml version="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd"></beans>

配置元数据

<?xml version="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd"><!--使用Spring来创建对象,在Spring这些都被称为Bean、Bean等于对象 类型 变量名 = new 类型(); Hello hello = new Hello(); id = 变量名 class = new 的对象 property 相当于给对象中的属性设置一个值! --><beanid="hello"class="com.cike.pojo.Hello"><!--str的赋值为value的内容--><propertyname="str"value="Spring"/></bean></beans>
  1. 在测试方法中实例化容器
publicclassMyTest{@Testpublicvoidtest(){// 获取Spring的上下文对象ApplicationContextcontext=newClassPathXmlApplicationContext("beans.xml");// 我们的对象现在都在Spring中管理了,要使用,直接去里面取出来就可以了Hellohello=(Hello)context.getBean("hello");System.out.println(hello.toString());}}

注意这个对象必须是这个,因为官方也是这样写的

  • 控制:谁来控制对象的创建,传统应用程序的对象是创建者自己,使用new关键字,Spring就是使用new关键字,但是现在对象创建权交给了Spring,程序员不再使用new关键字来创建对象了
  • 反转:程序本身不创建对象,而变为被动的接受对象
  • 依赖注入:就是利用set方法来进行注入的,才能利用Spring来给对象设置属性
  • Ioc是一种编程思想,由主动的编程变为被动的接收对象

有这个叶子说明被Spring使用了

底层分析

可以通过newClassPathXmlApplicationContext 去浏览底层源码

将传统开发的改写为Spring的容器管理

  1. UserDao接口
publicinterfaceUserDao{voidgetUser();}
  1. UserDaoImpl Dao层实现类
publicclassUserDaoImplimplementsUserDao{@OverridepublicvoidgetUser(){System.out.printf("获取用户Dao层");}}
  1. UserDaoMysqlImp业务实现类
publicclassUserDaoMysqlImplimplementsUserDao{@OverridepublicvoidgetUser(){System.out.println("Mysql获取用户数据");}}
  1. UserDaoSqlserver业务实现类
publicclassUserDaoSqlserverimplementsUserDao{@OverridepublicvoidgetUser(){System.out.println("SqlServer获取用户数据");}}
  1. 业务层接口
publicinterfaceUserService{voidgetUser();}
  1. 业务层JavaBean
publicclassUserServiceImplimplementsUserService{// 面向接口编程privateUserDaouserdao;// 利用set进行动态实现值的注入!publicvoidsetUserdao(UserDaouserdao){this.userdao=userdao;}// 业务层就做一个事情,调用dao层@OverridepublicvoidgetUser(){userdao.getUser();}
  1. 基于XML配置Spring容器的元数据
<?xml version="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd"><!-- 相当于 UserDaoSqlserver daoSqlserver = new com.cike1.dao.UserDaoSqlserver(); --><beanclass="com.cike1.dao.UserDaoSqlserver"id="daoSqlserver"/><beanclass="com.cike1.dao.UserDaoMysqlImpl"id="daoMysql"/><beanclass="com.cike1.service.UserServiceImpl"id="userServiceImpl"><!-- ref:引用Spring容器中创建好的对象 value:具体的值,基本数据类型 --><propertyname="userdao"ref="daoSqlserver"/></bean></beans>

  1. 测试方法中实例化容器&使用
publicvoidhello2(){// 获取ApplicationContext;拿到Spring的容器ApplicationContextcontext=newClassPathXmlApplicationContext("beans.xml");// 容器在手,天下我有,需要什么,就直接get什么UserServiceImpluserServiceImpl=(UserServiceImpl)context.getBean("userServiceImpl");userServiceImpl.getUser();}

OK,到了现在我们彻底不用在程序中去改动了,要实现不同的操作,只需要在XML配置文件中修改,所谓的IoC,一句话搞定:对象由Spring来创建,管理,装配!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询