spring新建工程(新建工程IoC)
Posted Dream
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring新建工程(新建工程IoC)相关的知识,希望对你有一定的参考价值。
1、新建一个web项目
2、导入jar包:四个核心(bean、core、context、expression),一个依赖
spring-framework-3.0.2.RELEASE-dependencies:集成了很多jar包,是最新版本。
spring-framework-4.2.4.RELEASE:与spring相关,目录结构如下:
(1)导入Spring的核心包:它们是Spring其它功能的基础(四个核心包)
(2)导入日志文件相关的jar包:(依赖包)
spring-framework-3.0.2.RELEASE-dependencies\\org.apache.commons\\com.springsource.org.apache.commons.logging\\1.1.1
另外一个日志文件相关的包(支持老版本):
spring-framework-3.0.2.RELEASE-dependencies\\org.apache.log4j\\com.springsource.org.apache.log4j\\1.2.15
使用maven、gradle可以简化导包的操作,处理包之间的依赖
3、IoC入门案例
(1)IoC(Inverse of Control)
IoC被称为控制反转,它是一种设计模式,实质上是将对象的创建方式进行反转。传统的资源获取方式是组件向容器发起请求,容器返回资源。在IoC模式下是容器主动地将资源推送给它所管理的组件,组件以合理的方式来接收资源即可。(将对象的创建交给了Spring)
(2)创建一个对象(Student):
package pers.zhb.domain;
public class Student {
private String snum;
private String sname;
private String sex;
public String getSnum() {
return snum;
}
public void setSnum(String snum) {
this.snum = snum;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Student{" +
"snum=\'" + snum + \'\\\'\' +
", sname=\'" + sname + \'\\\'\' +
", sex=\'" + sex + \'\\\'\' +
\'}\';
}
}
(3)创建配置文件:
位置:任意(这里放在src目录下)
名字:任意(这里用applicationContext)
导入外部约束(IDEA):
File下选择Settings:
URI填入网络地址,File填入约束文件在本地的路径,然后点击确定配置完成。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd "> </beans>
有提示即表明约束导入成功。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd "> <bean name="student" class="pers.zhb.domain.Student"> </bean> </beans>
以上的配置文件的作用是将Student对象交给Spring容器管理:
bean:配置需要创建的对象
name:用于以后从后spring容器中获得实例时使用
class:需要创建实例类的全限定名
(5)测试:
创建测试类:
public class Test {
public void test1(){
ApplicationContext applicationContext=new
ClassPathXmlApplicationContext("applicationContext.xml");//创建容器对象
Student student=(Student)applicationContext.getBean("student");
student.setSname("zhai");
student.setSnum("202012");
student.setSex("nv");
System.out.println(student);
}
public static void main(String[] args){
Test test=new Test();
test.test1();
}
}
创建Spring的容器对象后将Student对象从容器中取出,通过set方法对对象进行赋值,打印结果如下:
4、spring与传统方式创建对象的对比
(1)spring方式:
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");//创建容器对象 Student student=(Student)applicationContext.getBean("student");
直接从容器中获取即可,是spring容器(spring容器可以管理bean,如:进行依赖注入),来创建对象
(2)传统方式:
Student student=new Student(); student.setSname("zhang"); student.setSnum("202019"); student.setSex("nan"); System.out.println(student);
程序自己创建对象,例如:web层需要依赖于service层的对象,service层又需要依赖于dao层的对象,他们之间的耦合程度较高。采用IoC的方式将对象的管理交给spring容器可以降低耦合度。
优点:
资源集中管理,实现资源的可配置和易管理,可以对容器创建的对象的单例、多例等进行配置
降低耦合度
缺点:
因为使用反射来创建对象,所以在效率上会有些损耗。但相对于程序的灵活性和可维护性来说,这点损耗是微不足道的。
缺少IDE重构的支持,如果修改了类名,还需到XML文件中手动修改,这似乎是所有XML方式的缺憾所在。
以上是关于spring新建工程(新建工程IoC)的主要内容,如果未能解决你的问题,请参考以下文章
Spring Framework Part3 IoC and Dynamic Proxy