zoukankan      html  css  js  c++  java
  • 第二章:装配Bean


    2.1:Spring装配Bean的可选方案
    编程人员需要让DI知道如何那些依赖关系需要被解决,编程人员可以通过,java配置、xml配置、Spring组件扫描自动装配的方法完成,也可以混合使用。本书建议使用的配置顺序是:自动扫描注入、java配置、xml配置。
    2.2:自动化装配Bean
    使用@Component注解修饰一个类后,Spring将认为这个类需要被ApplicationContext管理为Bean(前提是使用ComponentScan开启可组件扫描)。ComponentScan可是用在java配置文件中和xml配置文件中。使用@Autowired注解修饰任何方法将引起Spring为该方法在上下文中寻找合适的依赖,如果匹配多个或者没有匹配到会抛异常。
    使用@Component修饰的组件
    @Component //默认组件ID为类名首字母小写,可以使用@Component("自定义组件ID")
    java普通类{
    @Autowired
    方法(依赖类 依赖对象){}
    }
    java配置文件开启组件扫描:
    @JavaConfig
    @ComponentScan //默认的扫描包为本类所在包,可以使用ComponentScan(basePackages="包A")、ComponentScan(basePackages={"包A",包B})、ComponentScan(basePackages={类A.class,类B.class})的方式指定别的包。
    java配置类{}
    xml配置文件中开启组件扫描:
    <beans>
    <context:component-scan base-package="..."/>
    </beans>
    2.3:通过java代码装配Bean
    使用@Configuration修饰的java类为Spring中java配置类,这个类只是使用java语言描述配置信息,不要将业务逻辑写进去。通过使用@Bean修饰方法来描述Bean。这个方法返回的对象将作为Bean注册到上下文中,方法名为Bean的ID。在别的Bean方法中可以直接调用该bean方法实现依赖注,也可以在方法中申明需要注入的类型参数实现依赖注入。被@Bean修饰的方法被调用时会被拦截,直接从上下文中找到实例注入。使用java配置可以在bean方法中编写任何java代码,功能强大。
    使用@Configuration修饰的java配置类
    @Configuration
    public class 配置类名{
    @Bean
    public 类型1 方法名A(){
    return 返回类实例;
    }
    //使用调用Bean方法实现注入,Bean方法会被拦截直接返回需要上下文中的实例。
    @Bean
    public 类型2 方法名B(){
    return new 类型2(方法A);
    }
    //通过参数声明实现注入,Spring根据参数类型自动注入。推荐使用*
    @Bean
    public 类型3 方法名C(类型1 类型1参数){
    return 类型3(类型1参数);
    }
    }
    2.4:通过xml装配Bean
    xml配置文件中使用<beans><bean>来声明Bean,<bean>中使用class指定这个Bean的类,使用ID自定义ID。xml配置的方法没有java配置强大,但是基本的配置都可以,如:构造方法中注入别的Bean、构造方法中注入字面值、注入集合、设置属性。Spring3.0引入了C命名空间。
    <bean>基本配置
    <bean id = "beanID" class ="xxx.yyy.zzz.类"> //不写ID默认生成的是ID是xxx.yyy.zzz.类#1。class中使用全类名。
    构造器注入
    <bean id = "ID" class = "xxx.yyy.类">
    <constructor-arg ref = "别的BeanID">
    </bean>
    <bean id = "ID" class = "xxx.yyy.类">
    <constructor-arg value = "字面值">
    </bean>
    集合的注入
    <bean id = "ID" class = "xxx.yyy.类">
    <constructor-arg>
    <null>
    </constructor-arg>
    </bean>
    <bean id = "ID" class = "xxx.yyy.类">
    <constructor-arg>
    <list>
    <value>字面值</value>
    <value>字面值</value>
    </list>
    </constructor-arg>
    </bean>
    <bean id = "ID" class = "xxx.yyy.类">
    <constructor-arg>
    <list> //也可以是别的集合set map
    <ref bean="beanID"/>
    <ref bean="beanID"/>
    </list>
    </constructor-arg>
    </bean>
    属性注入:
    <bean id = "ID" class = "xxx.yyy.类">
    <property name = "属性名" ref = "别的Bean"/> //其实是为属性的set方法提供的注入。
    </bean>
    <bean id = "ID" class = "xxx.yyy.类">
    <property name = "属性名" value = "字面值"/>
    </bean>
    //同样也可以对属性进行注入集合。
    2.5:导入和混合配置
    ???????????????????


  • 相关阅读:
    【BZOJ1087】状压dp
    【数据库课程设计】
    【BZOJ1295】最短路
    vue组件间通信六种方式(完整版)
    常见六大Web安全攻防解析
    4、css之position
    hue集成各种组件
    1.25-1.26 Coordinator数据集和oozie bundle
    1.22-1.24 Oozie企业使用案例
    1.18-1.21 Oozie Coordinator调度
  • 原文地址:https://www.cnblogs.com/Xmingzi/p/8990228.html
Copyright © 2011-2022 走看看