先写个例子吧
配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 使用Spring来创建对象,在spring这些都称为beanbean=对象 new Hello();id=变量名class=new 的对象;property 相当于给对象值
--><bean id="hello" class="com.heerlin.pojo.Hello"><property name="str" value="Spring"/></bean>
</beans>
测试:
import com.heerlin.pojo.Hello;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class MyTest {public static void main(String[] args) {//获取spring上下文对象ApplicationContext context=new ClassPathXmlApplicationContext("beans.xml");//我们的对象现在都在SPRING中的管理了,我们要使用,直接去里面取出来就可以Hello hello = (Hello)context.getBean("hello");System.out.println(hello.toString());}
}
控制:谁来控制对象的创建,传统应用程序的对象是由程序本身控制创建的,使用Spring后,对象由Spring来创建的
反转∶程序本身不创建对象,而变成被动的接收对象.
示例二:
使用三层架构+容器
往容器里丢东西
测试:
import com.heerlin.dao.UserDaoMysqlImpl;
import com.heerlin.dao.UserDaoOraclempl;
import com.heerlin.dao.UserDaolmpl;
import com.heerlin.service.UserService;
import com.heerlin.service.UserServicelmpl;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class MyTest {//用户实际调用的是业务层,dao层他们不需要接触public static void main(String[] args) {//获取ApplicationContext:拿到spring的容器ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");UserServicelmpl userServicelmpl=(UserServicelmpl) context.getBean("UserServiceImpl");userServicelmpl.getUser();}
}
IOC是一种编程思想,由主动的编程变成被动的接收.
可以通过newClassPathXmlApplicationContext去浏览一下底层源码.
OK,到了现在,我们彻底不用再程序中去改动了,要实现不同的操作,只需要在xml配置文件中进行修改,所谓的loC,一句话搞定:对象由Spring来创建,管理,装配!
alias 设置别名 , 为bean设置别名 , 可以设置多个别名
<!--设置别名:在获取Bean的时候可以使用别名获取-->
<alias name="userT" alias="userNew"/>
Bean的配置
<!--bean就是java对象,由Spring创建和管理-->
<!--id 是bean的标识符,要唯一,如果没有配置id,name就是默认标识符如果配置id,又配置了name,那么name是别名name可以设置多个别名,可以用逗号,分号,空格隔开如果不配置id和name,可以根据applicationContext.getBean(.class)获取对象;class是bean的全限定名=包名+类名
-->
<bean id="hello" name="hello2 h2,h3;h4" class="com.kuang.pojo.Hello"><property name="name" value="Spring"/>
</bean>
团队的合作通过import来实现 .
团队的合作通过import来实现 .