Spring是桥梁,用于联系struts和hibernate
Ioc:控制反转 inverse of context 作用:依赖注入
之前:创建对象是通过new出来的,就需要知道对象的所有属性和方法
现在:创建对象是交给Spring里面创建
就是将创建对象的权力反转给了spring,让spring工厂创建对象
第一步:导spring的核心(pom.xml)
<!-- spring的核心依赖 -->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.10.RELEASE</version>
</dependency>
在新建XML时要下载spring的插件
第二步:现在新建一个spring的工厂(xml文件)
右键包名------点击other----搜索spring-----新建configuration File结尾的------名字自定义(我的名字是applicationContext.xml)
新建后效果
第三步:再新建实体类,(我新建的是一对多的关系 City类和Province类)
第四步:把创建对象的权力交给spring工厂
注入方式:第一种:属性注入:通过给属性赋值
在applicationContext.xml中
<!-- 属性注入
id:给实体类取的名字
class:实体类的包名加类名
-->
<bean id="c" class="com.ywy.entity.City">
<!-- name:是实体类对应的名称 value:值 -->
<property name="cid" value="1"></property>
<property name="cname" value="长沙"></property>
</bean>
测试类获取
//获取spring对象(通过xml文件创建xml工厂)
BeanFactory factory=new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));
//到工厂里面拿对象 c就是id名
City city=(City) factory.getBean("c");
System.out.println(city.getCname());
第二种注入:构造注入:通过构造方法(实体类就需要有对应的构造方法)
<!-- 构造注入
一定要有对应的构造方法
-->
<bean id="ci" class="com.ywy.entity.City">
<!-- 构造方法里括号对应的属性-->
<property name="cname" value="长沙"></property>
</bean>
获取是一样的
第三种注入:依赖注入:通过引入依赖,是IOC的核心
<!-- 依赖注入
给对象里面的对象赋值
-->
<bean id="city" class="com.ywy.entity.City">
<!-- ref:依赖下面的pro对象 -->
<!-- 城市里面的省份对象就依赖pro-->
<property name="province" ref="pro"></property>
</bean>
<!-- 创建一个省份对象-->
<bean id="pro" class="com.ywy.entity.Province">
<property name="pname" value="湖南省"></property>
</bean>
获取方式也是一样的