开发一个spring项目.——>得出结论:spring是一种容器框架,可以配置bean(通俗的将就是java类)并且注入属性(给那个java类的对象添加属性)
1. 引入spring的开发包(最小配置spring.jar 该包把常用的jar都包括, 还要写日志包 common-logging.jar
2. 创建spring的一个核心文件applicationContext.xml, 该文件一般放在src目录下,该文件中引入 xsd文件 :
[ hibernate有核心 hibernate.cfg.xml; struts核心文件 struts-config.xml ],
可以从给出的案例中拷贝一份.
3. 配置bean
<!-- 在容器文件中配置bean(service/dao/domain/action/数据源) -->
<!-- bean元素的作用是,当我们的spring框架加载时候,spring就会自动的创建一个bean对象,并放入内存
UserService userSerivce=new UserService();
userSerivce.setName("1"); 利用反射机制,读取class文件,调用set方法,直接写入-->
<beanid="userService" class="com.service.UserService">
<property name="name"><!-- 添加属性;这里就体现出注入的概念.-->
<value>1</value>
</property>
</bean>
4. 在Test.java中,我们利用ApplicationContext 得到容器对象(ApplicationContext 对象),然后这个对象对应配置文件,根据配置文件可以直接调用UserServiceus对象的引用
(不利于spring直接写,是先引入需要类的包,然后创建对象,添加属性值即可,如果用spring可以不用引入包也不用创建对象添加属性值)
//1.得到spring 的applicationContext对象(容器对象)
ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");//利用这个ApplicationContextac直接对应applicationContext.xml文件
UserServiceus=(UserService) ac.getBean("userService");
us.sayHello();
1.当ClassPathXmlApplicationContext("applicationContext.xml");执行的时候,我们的spring容器对象被创建,同时
applicaionContext.xml中配置bean就会被创建(内存[Hashmap/HashTable])
2.UserServiceus=(UserService) ac.getBean("userService");us.sayHello();
总结:使用spring ,没有new 对象,我们把创建对象的任务交给spring框架;
spring实际上是一个容器框架,可以配置各种bean(action/service/domain/dao),并且可以维护bean与bean的关系,当我们需要使用某个bean的时候,我们可以getBean(id),使用即可
ioc是什么?
答 :ioc(inverse of controll ) 控制反转: 所谓控制反转就是把创建对象(bean),和维护对象(bean)的关系的权利从程序中转移到spring的容器(applicationContext.xml),而程序本身不再维护.
DI是什么?
答:di(dependency injection) 依赖注入: 实际上di和ioc是同一个概念,spring设计者认为di更准确表示spring核心技术