利用IDEA创建一个spring程序
打开File--new project,左边选择spring一栏,
右边勾选spring,下方的勾选springConfig.xml也要选上,会自动生成spring的配置文件
jar文件这里选择download即可,当然也可以灵活选择
webApplication 也勾选上
然后下一步,取好项目名称选择好文件夹后,下一步。我这里是download,所以它会帮我下载jar包
完成后项目目录结构如下,spring配置文件,web的配置文件都有,jar包也非常齐全。
下面是代码,创建了一个接口,然后实现类里重写了这个方法。配置文件里创建了实现类的bean实例,取名为beanA。
测试代码里初始化spring容器,加载spring配置文件。通过容器去获取PersonDao的实例,实例名称是beanA ,配置文件里已经写好beanA 是实现类
然后调用add,打印语句。这里PersonDao对象传入的是实现类的对象。
注意:这个例子其实不算特别好,第一次接触的人可能会纠结在父类和子类的问题,写法上搞不清楚。大家可以把测试类的PersonDao直接换成PersonImp,一样的结果,记住它要告诉你的是框架来帮助我们创建对象。我在下面写了第二个例子
package spring.ioc; public interface PersonDao { public void add(); }
package spring.ioc; public class PersonImp implements PersonDao { public void add() { System.out.println("实现类的add执行了"); } }
package spring.ioc; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class personImpTest { @Test public void test1(){ String xmlPath = "spring-config.xml"; ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath); PersonDao personDao = (PersonDao) applicationContext.getBean("beanA"); personDao.add(); } }
<bean id="beanA" class="spring.ioc.PersonImp"/>
例子二:我直接创建了一个类,没有采用父类子类的方式,可能新人更容易接受点。好好体会下框架帮助我们创建对象这句话
package spring.ioc; public class People { private String name; public String getName() { System.out.println("name"+name); return name; } public void setName(String name) { this.name = name; } }
String xmlPath = "spring-config.xml"; ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath); People people = (People) applicationContext.getBean("beanB"); people.getName();
<bean id="beanB" class="spring.ioc.People">
<property name="name" value="Jack"/>
</bean>
测试:我们用spring自带的junit进行测试,暂时用不上网页。记得class选择你的测试类,不然会报no testClass之类的错误。
最后,我们一开始创建项目的时候,勾上了webapplication,然而我们也没用到网页。
我们可以直接创建sprIng项目,不勾选web,编写代码进行测试,结果也是一样的,下面是我的测试结果,左侧没有网页目录
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端