spring注入bean的方式

spring注入bean的方式
  • 方法一:基于XML的bean定义(需要提供setter方法)
[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">  
  5.   
  6.     <bean id="student" class="test.Student">  
  7.         <property name="name" value="张三"/>  
  8.         <property name="teacher" ref="teacher"/>  
  9.     </bean>  
  10.   
  11.     <bean id="teacher" class="test.Teacher">  
  12.         <property name="name" value="李四"/>  
  13.     </bean>  
  14.   
  15. </beans>  
[java]  view plain  copy


  • 方法二:基于注解的bean定义(不需要提供setter方法)
Spring为此提供了四个注解,这些注解的作用与上面的XML定义bean效果一致,在于将组件交给Spring容器管理。组件的名称默认是类名(首字母变小写),也可以自己修改:
@Component:当对组件的层次难以定位的时候使用这个注解
@Controller:表示控制层的组件
@Service:表示业务逻辑层的组件
@Repository:表示数据访问层的组件
使用这些注解的时候还有一个地方需要注意,就是需要在applicationContext.xml中声明<contex:component-scan...>一项,指明Spring容器扫描组件的包目录。
[java]  view plain  copy
  1. @Component("teacher")  
  2. public class Teacher {  
  3.   
  4.     @Value("李四")  
  5.     private String name;  
  6.   
  7.     public String getName() {  
  8.         return name;  
  9.     }  
  10.   
  11. }  
[java]  view plain  copy
  1. @Component("student")  
  2. public class Student {  
  3.   
  4.     @Value("张三")  
  5.     private String name;  
  6.   
  7.     @Resource  
  8.     private Teacher teacher;  
  9.   
  10.     public String getName() {  
  11.         return name;  
  12.     }  
  13.   
  14.     public Teacher getTeacher() {  
  15.         return teacher;  
  16.     }  
  17.   
  18. }  
[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.        xmlns:context="http://www.springframework.org/schema/context"  
  5.        xsi:schemaLocation="http://www.springframework.org/schema/beans  
  6.        http://www.springframework.org/schema/beans/spring-beans.xsd  
  7.        http://www.springframework.org/schema/context  
  8.        http://www.springframework.org/schema/context/spring-context.xsd">  
  9.   
  10.     <!--扫描组件的包目录-->  
  11.     <context:component-scan base-package="test"/>  
  12.   
  13. </beans>  

  • 方法三:基于Java类的bean定义(需要提供setter方法)
[java]  view plain  copy
  1. @Configuration  
  2. public class BeansConfiguration {  
  3.   
  4.     @Bean  
  5.     public Student student(){  
  6.         Student student=new Student();  
  7.         student.setName("张三");  
  8.         student.setTeacher(teacher());  
  9.         return student;  
  10.     }  
  11.   
  12.     @Bean  
  13.     public Teacher teacher(){  
  14.         Teacher teacher=new Teacher();  
  15.         teacher.setName("李四");  
  16.         return teacher;  
  17.     }  
  18.   
  19. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值