- 环境搭建
- 导入Sring对应的jar包
- 导入Spring依赖的commons-loggin包
- 导入log4j.properties在src下
- 导入ApplicationContext.xml在任意目录下
- 是一个轻量级的企业开发框架
- 核心:IOC , AOP编程
- IOC:也就是inverse of control 控制反转
- 就是讲创建对象的权利转移到工厂中,从而实现解耦合和对于jdk功能的增强
- 对于常见的Spring工厂
- 本地使用的Spring工厂类 ClassPathXmlApplicationContext();
- 实际应用
- 对于单个配置中
- 控制对象创建的次数:单个:songleton
- 多个:protoprototype
- 如何使用
-
- 将对应的配置写入applicationContext.xml中
<?xml version="1.0" encoding="UTF-8"?> <beans > <bean id="us" class="com.youyi.test.UserServiceimpl" scope="prototype"></bean> <--比如这里就是id就是相当于引用名,class就是实际上的全类名,也就是指向的类,体现了一部分解耦合-->
<!--这里的关系依然是反射解决:通过id找到对应的class找到全类名生成对应的类对象再newInstance生成对应的类的对象--> </beans> - 对应实际java的使用
import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class BeanTest1 { public static void main(String[] args) {
//这里就是创建spring工厂的本地实现类 ClassPathXmlApplicationContext cpc = new ClassPathXmlApplicationContext("classpath:/com/youyi/test/applicationContext.xml"); Object bean = cpc.getBean("us"); //通过实际的引用名去找到对应的class System.out.println(bean); Object bean2 = cpc.getBean("us"); //如果是单实例的选项的话这里bean和bean2打印出来的地址是一样的.但是如果是prototype的话二者属于多实例创建并不是同一个实例就不一样 System.out.println(bean2); } }<!--这里是xml文件还是配置的时候注意的地方:-->
<bean id="addressa" class="com.youyi.test3.Address"> <property name="city" value="洛阳"></property> <property name="zipCode" value="471003"></property> </bean> <!--对象当属性要先配置好这个对象放到工厂里之后ref引用就好--> <bean id="user" class="com.youyi.test3.User"> <property name="username" value="zhangshun"></property> <property name="age" value="15"></property>//这是String和基本数据类型和包装类的写法 <property name="alive" value="true"></property> <property name="hobby">//这是集合和数组的写法 <list> <value>"抽烟"</value> <value>"喝酒"</value> <value>"烫头"</value> <value>"爱老婆"</value> </list> </property> <property name="friends">//这是map集合 <map> <entry key="1" value="张思梦"></entry> <entry key="2" value="杜梦媛"></entry> <entry key="3" value="嫣然"></entry> </map> </property> <property name="dateSourse">//这是properties文件对应的写法 <props> <prop key="c1">"连接池1"</prop> <prop key="c2">"连接池2"</prop> </props> </property> <property name="address" ref="addressa"></property>//这就是对象当属性的时候用ref指向的形式 </bean>
- 将对应的配置写入applicationContext.xml中
-
- 对于单个配置中
转载于:https://www.cnblogs.com/newzhangshun/p/10096619.html