各位小伙伴,大家好!点个关注,更多精彩等着你哦!!
今天,勇哥我想跟大家分享有关Spring的入门小知识IOC容器,这是Spring入门系列课程,听说优秀的程序员都会点赞关注!
一、什么是IOC?
IOC即控制反转,将对象管理交给容器来管理,由容器帮我们查找并注入依赖的对象,对象中的属性行为等,对象只能被动的接收依赖对象,依赖对象的获取被反转了。IOC可以管理所有轻量级的JavaBean组件,提供的底层服务包括组件的生命周期管理、配置和组装服务、AOP支持,以及建立在AOP基础上的声明式事务服务等等。
IOC的作用:可降低组件之间的耦合度,便于软件之间的解耦。IOC容器提供众多服务,如事务管理等。当我们使用容器管理事务时,开发程序员就不再需要手工控制事务,这样就可以减少不必要的麻烦了,进一步提高工作效率。
如以下所举的列子:图中的中介就相当于Sping中的容器管理IOC,对象房东就交给容器来管理。
二、引入依赖注入。
这是我们一定会疑问,该如何使用Spring? 接下来,我教大家如何用maven导入项目所需的依赖包及创建一个项目。
1.首先用maven创建一个小项目,在pom.xml引入依赖包。
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>spring2</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.12.RELEASE</version> </dependency> </dependencies> </project>
2.然后在项目中先创建一个包,在包中再创建Woman类
package demo1; public class Woman { private String name; private int age; private String outlook; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getOutlook() { return outlook; } public void setOutlook(String outlook) { this.outlook = outlook; } @Override public String toString() { return "Woman{" + "name='" + name + '\'' + ", age=" + age + ", outlook='" + outlook + '\'' + '}'; } }
3.在创建一个Man类
public class Man { private String name; private int age; private double height; private double weight; private int fund; private Woman woman; public void proposal(){ System.out.println("这名男生名叫"+name+" \n年龄为"+age+"。是一个拥有资产为:"+fund+"的富豪。向一名为:"+ woman.getName()+woman.getAge()+woman.getOutlook()+"的小姐姐求婚了"); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public double getHeight() { return height; } public void setHeight(double height) { this.height = height; } public double getWeight() { return weight; } public void setWeight(double weight) { this.weight = weight; } public int getFund() { return fund; } public void setFund(int fund) { this.fund = fund; } public String getInterest() { return interest; } public void setInterest(String interest) { this.interest = interest; } private String interest; @Override public String toString() { return "Man{" + "name='" + name + '\'' + ", age=" + age + ", height=" + height + ", weight=" + weight + ", fund=" + fund + ", interest='" + interest + '\'' + '}'; } public void setWoman(Woman woman) { this.woman = woman; } public Woman getWoman() { return woman; } }
4.最后再创建一个测试类。
package demo1; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class SpringUser { public static void main(String[] args) { //ClassPathXmlApplicationContext是ApplicationContext的实现类 //ApplicationContext是BeanFactory的子接口 ApplicationContext context=new ClassPathXmlApplicationContext("classpath:ApplicationContext.xml"); Woman xiaoyu = (Woman) context.getBean("xiaoyu"); System.out.println(xiaoyu); Man yong=(Man) context.getBean(Man.class); System.out.println(yong); System.out.println(xiaoyu==yong.getWoman()); } }
5.在xml文件中配置Bean,其中包括基本属性。
bean元素:该元素用来描述需要spring容器管理对象
class属性:被管理对象的完整类名
id属性:与name属性一模一样,名称不可重复,及被管理对象的名字
name属性:给被管理的对象起名字,获得对象时可用于来获取属性值,getBean("name值")
<?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/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--suppress SpringFacetInspection --> <bean id="xiaoyu" class="demo1.Woman"> <property name="name" value="小宇"/> <property name="age" value="18"/> <property name="outlook" value="沉鱼落雁"/> </bean> <bean id="yong" class="demo1.Man"> <property name="name" value="小华"/> <property name="age" value="20"/> <property name="fund" value="1000000000"/> <property name="height" value="178"/> <property name="interest" value="爱打篮球,喜欢科研,热爱ai"/> <property name="weight" value="105"/> <property name="woman" ref="xiaoyu"/> </bean> </beans>
最后,祝你们都有所收获,喜欢记得点个关注,更多精彩等着你哦!!