SpringDay01
Spring的控制反转
Spring的依赖注入
多种注入方式
多种属性的注入方式
<bean id="userDao" class="dao.UserDaoImpl"></bean> <!-- 构造方法的方式注入属性 --> <bean id="car" class="entity.Car"> <constructor-arg name="name" value="保时捷"></constructor-arg> <constructor-arg name="price" value="1000000"></constructor-arg> </bean> <!-- set方法的方式注入属性 --> <bean id="car2" class="entity.Car2"> <property name="name" value="奇瑞QQ"></property> <property name="price" value="40000"></property> </bean> <!-- 注入对象类型的注入 --> <bean id="person" class="entity.Person"> <property name="name" value="张三"></property> <property name="car" ref="car"></property> </bean> <!-- Spring的复杂类型的注入 --> <bean id="collectionBean" class="entity.CollectionBean"> <!-- 数组类型的属性 --> <property name="array"> <list> <value>张三</value> <value>李四</value> <value>王五</value> </list> </property> <!-- 注入List集合的数据 --> <property name="list"> <list> <value>张三</value> <value>李四</value> <value>王五</value> </list> </property> <!-- 注入Map集合 --> <property name="map"> <map> <entry key="aaa" value="111"></entry> <entry key="bbb" value="222"></entry> <entry key="ccc" value="333"></entry> </map> </property> </bean>
package test; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import dao.UserDao; import entity.Car; import entity.Car2; import entity.CollectionBean; import entity.Person; public class Test1 { @Test public void demo(){ //创建Spring的工厂类: ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); //通过工厂解析XML获取Bean的实例. UserDao userDao = (UserDao) applicationContext.getBean("userDao"); userDao.sayHello(); Car car = (Car) applicationContext.getBean("car"); System.out.println(car.getName()); System.out.println(car.getPrice()); System.out.println("---------------------------"); Car2 car2 = (Car2) applicationContext.getBean("car2"); System.out.println(car2.getName()); System.out.println(car2.getPrice()); System.out.println("---------------------------"); Person person = (Person) applicationContext.getBean("person"); System.out.println(person.getName()); System.out.println(person.getCar().getName()); System.out.println("---------------------------"); CollectionBean collectionBean = (CollectionBean) applicationContext.getBean("collectionBean"); System.out.println(collectionBean.getArray().length); System.out.println(collectionBean.getList().toString()); System.out.println(collectionBean.getMap().toString()); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~