spring IOC demo
1、使用xml文件配置:
创建applicationContext.xml,在该文件中创建需要的bean,
<bean id="hello" class="springdemo.HelloSpring"></bean>
此语句即可创建该类对象,即控制反转,使用容器创建对象。
属性注入:分为set方法与构造方法注入,构造方法可使用下标索引或者数据类型进行对应注入,或者都使用。set注入则使用name=“属性名”进行注入。spring只检查是否有属性对象的set方法,不检查是否有该属性,如setName()方法。
1 <bean id="hello" class="springdemo.HelloSpring"> 2 <constructor-arg index="0" value="kobe"></constructor-arg> 3 <constructor-arg index="1" value="44"></constructor-arg> 4 <property name="name" value="多帅哦"></property> 5 <property name="num" value="22"></property> 6 </bean>
p标签:简化配置信息
1 <bean id="hello" class="IOCdemo.HelloSpring" 2 p:name="帅的不谈" 3 p:num="22" 4 />
静态工厂注入:把静态方法放入bean中。
<bean id="carFactory" class="springdemo.CarFactory" factory-method="getCar"></bean>
2、使用注解:
使用包扫描工具
<context:component-scan base-package="springAutoDemo"></context:component-scan>
使用Component、Service、Repository、Controller注解把一个类标注为一个bean,使用Autowired注解实现bean的依赖注入
1 package springAutoDemo; 2 3 import org.springframework.stereotype.Component; 4 5 @Component 6 public class Person { 7 8 private String name; 9 private int age; 10 11 public String getName() { 12 return name; 13 } 14 public void setName(String name) { 15 this.name = name; 16 } 17 public int getAge() { 18 return age; 19 } 20 public void setAge(int age) { 21 this.age = age; 22 } 23 24 @Override 25 public String toString() { 26 return "User [name=" + name + ", age=" + age + "]"; 27 } 28 29 }
1 package springAutoDemo; 2 3 import org.springframework.beans.factory.annotation.Autowired; 4 import org.springframework.stereotype.Service; 5 6 @Service 7 public class Student { 8 9 private Person person; 10 11 @Autowired 12 public void setPerson(Person person) { 13 this.person = person; 14 } 15 16 17 public void getPerson() { 18 System.out.println(person.toString()); 19 } 20 21 }
测试类
1 package springAutoDemo; 2 3 import org.springframework.context.ApplicationContext; 4 import org.springframework.context.support.ClassPathXmlApplicationContext; 5 6 public class AutoTest { 7 8 public static void main(String[] args) { 9 10 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); 11 12 Student student = context.getBean("student", Student.class); 13 student.getPerson(); 14 15 } 16 17 }