策码奔腾

Spring框架(一) ---- 创建bean

一、使用Spring创建Bean

  1.使用xml配置创建

     1.1创建声明了xsd的xml配置文件

    1.2使用bean标签声明一个bean,使用id属性声明bean的名称,使用class属性声明bean的路径

    1.3使用property注入属性,使用name声明属性的名称,使用ref声明属性的bean,使用value声明属性值,可以是list,set,string,bean等

         或使用constructor-arg从构造器注入参数 ,可以是list,set,string,bean等

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">


    <!-- 配置Bean,默认id是com.zoo.animals.Duck#0 -->
    <bean id="blackDuck"   class="com.zoo.animals.Duck">
        <property name="food" value="water" />
     <property name="action" ref="duckActionBean" />

   </bean>
  <bean id="pool"     class="com.zoo.places.Pool">
        <constructor-arg   value="stone" />
     <constructor-arg>
      <list>
        <value>5m</value>
        <value>6m</value>
      </list>
        </constructor-arg>
    </bean>
 
</beans>    

 

 

 2.使用java配置创建

     2.1使用@Configuration注解在类上标明这是一个配置类

    2.2在配置类中写一个返回bean对象方法,并使用@Bean注解标明,方法名就是Bean名,也可以使用name属性命名

    2.3在方法中完成依赖注入

@Configuration
public class SpringBeanConfig{
    @Bean(name="blackDuck")
    public Animal duck(){
      return new Duck()
    }
    @Bean
    public Place pool(){
      return new Pool(duck())
    }

    @Bean
    public Place pool(Animal ani){
      return new Pool(ani)
    }
}

 

 

 

  3.使用注解创建

    3.1启动注解扫描

      <1>在xml配置中使用如下配置启动,base-package为扫描的包路径   

          <!-- 启动自动扫描 -->
          <context:component-scan base-package="com.zoo.*" />

      <2>在java配置类中使用@ComponentScan注解在类上启动,使用basePackages声明扫描路径,使用{“a”,“b”}方式声明多个路径

    3.2使用@Component注解声明bean

    3.3使用@Autowired注解声明注入,可以声明在属性上或任何方法上,使用required=false声明不是必须装配的

        
@Component("blackDuck")
public class Duck{

}


public class Pool{
  @Autowired(required=false)
  private Duck duck;    

}

 



 

posted @ 2019-03-24 21:33  策码奔腾  阅读(323)  评论(0编辑  收藏  举报
console.log('欢迎');