公司建站费用,怎样做网站内链,sqlite开发网站,现在的网站前端用什么做IOC
IOC就是将获取对象的方式将给框架#xff0c;或者交给容器进行#xff0c;有三种方式
基于Xml 元数据模式基于注解的配置基于Java config
XML形式
相关的注解
需要再相应的对象类class上使用 Component修饰#xff0c;表示是一个beacon。#xff0c;然后再XML中配…IOC
IOC就是将获取对象的方式将给框架或者交给容器进行有三种方式
基于Xml 元数据模式基于注解的配置基于Java config
XML形式
相关的注解
需要再相应的对象类class上使用 Component修饰表示是一个beacon。然后再XML中配置启动自动扫描或者直接配置也可以但是自动扫描会更好一些。
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd//自动扫描的
context:component-scan base-packagecom.demo.model/
//手动配置的手动配置的话可以额外配置其他属性。比如这个qualifierbean idCleanAir classcom.demo.model.CleanAirqualifier valuecleanair/ /bean bean idDirtyAir classcom.demo.model.DirtyAirqualifier valuedirtyair//beanbean idperson classcom.demo.model.Person/
/beans对应的类
package com.demo.model;import org.springframework.stereotype.Component;Component
public class CleanAir implements IAir {Overridepublic String toString() {return CleanAir;}
}
package com.demo.model;import org.springframework.stereotype.Component;Component
public class DirtyAir implements IAir {Overridepublic String toString() {return DirtyAir;}
}
package com.demo.model;public interface IAir {}
package com.demo.model;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;Component
public class Person {//Autowired //对构造函数进行标注public Person(Qualifier(dirtyair)IAir air) {this.air air;}IAir air;public void Breath(){System.out.print(this.air.toString());}
}
Main函数
package com.demo.ioc;import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import com.demo.model.*;/*** Hello world!**/
public class App
{public static void main( String[] args ){ //这个就是XML配置的然后使用beanFactory进行获取bean。ApplicationContext contextnew ClassPathXmlApplicationContext(new String[]{ApplicationContext.xml});BeanFactory factorycontext;Person person(Person)factory.getBean(person);person.Breath(); }}
其他
只使用Qualifier(“”)注解而不使用Autowired 注解为什么结果还是争取的呢 Qualifier(“”) 注解和 Autowired 注解都是 Spring 框架中的依赖注入注解。它们的作用是不同的。
Autowired 注解用于自动装配 bean它告诉 Spring 在相应的 bean 中查找匹配的依赖项并自动进行注入。如果没有找到匹配的 beanSpring 会抛出 NoSuchBeanDefinitionException 异常。
Qualifier 注解用于指定 bean 的名称在有多个相同类型的 bean 时通过指定 Qualifier 注解可以明确指定需要注入哪一个 bean。如果没有指定 Qualifier 注解或者指定的名称与实际的 bean 不匹配Spring 会抛出 BeanCreationException 异常。
如果你只使用 Qualifier(“”) 注解而不使用 Autowired 注解这实际上是告诉 Spring 你想要手动指定要注入的 bean。但如果你没有在相应的 bean 中使用 Qualifier 注解来指定名称或者没有在 Spring 配置中定义相应的 bean那么 Spring 就无法找到要注入的 bean结果会是相同的。
因此如果你只使用 Qualifier 而不使用 Autowired你必须确保在 Spring 配置中定义了相应的 bean并在需要注入的类中手动使用 Qualifier 注解来指定名称。否则结果将是争取的。