springIOC:控制反转
普通JAVA程序运行流程: 1、HelloWorld.java public class HelloWorld{ public void say(){ System.out.println("hello"); } public static void main(String[] args){ HelloWorld hw = new HelloWorld(); hw.say(); } } 2、.java ---> .class javac excute 3、把.class文件放入到JVM中 4、得到运行结果
Spring容器运行: 1、完成HelloWorld.java 2、把HelloWorld这个类以配置文件形式放入到容器中 3、启动Spring容器 4、利用Spring的API把HelloWorld这个对象拿出来 5、HelloWorld.say()完成方法的调用 说明:创建HelloWorld这个类是由Spring容器完成,Spring容器就相当于生活中的电饭煲,而类就像是电饭煲中的米粒,对象就像是电饭煲中的饭粒。
Spring做了创建对象这个动作,因此"反转"一次的含义为Spring自动把类转换为现实中的对象,所以叫“控制反转”。
<!--把HelloWorld这个类纳入Spring容器中,通过在applicationContext.xml配置文件中创建bean对象,bean规范写法为: id为bean的唯一标识,类的第一个字母变为小写,其余不变; class为类的全名!--> <bean id="helloworld" class="***.***.Hellworld"></bean>
启动Spring容器: public class IOCTest{ /** *创建Spring容器就相当于启动Spring容器
*Spring做的其中的一个工作就是创建对象 */ @Test public void testHelloWorld(){ ApplicationContext context
= new ClassPathXmlApplicationContext("applicationContext"); HelloWorld helloWorld = context.getBean("helloWorld"); helloWorld.say(); } }
别名 <beans> <alias name="person" alias="p"/><!--name引用的是已经创建的bean-name,alias则是写不同于bean-name的名字,name的数量不限,相对于一个人的绰号不限--> <bean name="person" class="cn.itcast.aliasspring.Person"/> </beans> 通过这样的配置,可以达到在一个地方命名,在多个地方使用不同的名字的效果。
Java创建对象有两种方式:1、new 2、反射机制
其实Spring容器默认调用类的无参构造函数创建对象,否则报错