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; }