-
原理
控制反转(Ioc)是面向对象的一种设计原则。可以用来降低代码之间的耦合度。其中最常用的方式:依赖注入与依赖查找。
所谓控制反转就是程序对象的创建与销毁不是通过程序自己控制而是交由Spring维护,并且根据需要注射到程序中 -
实例
- web.xml设置
在web.xml中配置applicationContext.xml的路径,applicationContext.xml的位置是在src目录下。
- applicationContext.xml配置
- 程序文件
// An highlighted block package src.cn.study.model; import org.springframework.stereotype.Component; @Component public class Person { private String age; private String name; public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
- 测试程序
package src.cn.test; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import src.cn.study.model.Person; public class PersonTest { @Test public void testPerson(){ //WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext(); ApplicationContext wac = new ClassPathXmlApplicationContext("src/applicationContext.xml"); Person p = (Person)wac.getBean("person"); System.out.println("age:"+p.getAge()+"==name:"+p.getName()); } }
- 测试结果
-
Bean的自动装配
自动装配其实就是配置Spring自动扫描路径,将标记注解的类自动生成对象。这种方便的地方在于面对太多的类的时候不用自己每个去配置,方便很多。
- 例程
- 配置applicationContext.xml文件
base-package后面跟着的是要扫描加载的目录。 - 类上添加注解
Dao层
package src.cn.study.Dao; import org.springframework.stereotype.Repository; import java.util.Calendar; @Repository("personDao") public class personDao implements IDao{ public String sayHello(String name){ int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY); if(hour < 6) return "凌晨早,"+name; if(hour < 12) return "早上好,"+name; if(hour < 13) return "中午好,"+name; if(hour < 18) return "下午好,"+name; return "晚上好,"+name; } }
- 配置applicationContext.xml文件
- Service层
package src.cn.study.Service; import org.springframework.stereotype.Service; import src.cn.study.Dao.IDao; import src.cn.study.Dao.personDao; import javax.annotation.Resource; @Service("serviceImpl") public class ServiceImpl implements IService { @Resource private personDao dao; public void setDao(personDao dao) { this.dao = dao; } @Override public void service(String name) { System.out.println(dao.sayHello(name)); } }
- 例程
Spring框架【0】:控制反转例程
最新推荐文章于 2023-06-29 19:28:50 发布