Spring通过注解管理控制反转(IOC)和注入(DI)

这篇博客探讨了Spring框架中注解的使用,包括依赖注入(DI)和控制反转(IOC)。通过注解@Resource、@Autowired、@Qualifier等实现依赖注入,详细解析了它们之间的区别和应用场景。同时,介绍了@Controller、@Service、@Repository和@Component等用于组件扫描的注解,以及在XML配置文件中的配合使用。

spring中的注解用法

1.注解的依赖注入di

在spring的xml中用

    <property name="" ref="">  <!-- setter方式注入-->
    <constructor index="" ref=""/><!--用构造函数方式注入-->

在spring的annotation注解中 :

 <property name="" ref="">  <!-- setter方式注入-->
 <constructor index="" ref=""/><!-- 用构造函数方式注入没有相应的注解-->

setter方式注入被替换成
@Resource
@Autowired @Qualifier
@Inject @Named

前提:需要在XML文件中添加

<!-- 用来解析@Resource注解@AutoWired@Inject注解 -->
	<context:annotation-config></context:annotation-config>

@Resource注解: 属于j2EE规范

 	 //name="userDao"  拿name的值userDao作为对象的名字去spring容器中寻找,有就注入
      @Resource(name="userDao")
      private UserDao userDao;
      
     //@Resource中没有写name属性,拿属性的名字userDao 去spring容器中寻找,有就注入
     @Resource
      private UserDao userDao;

      //有name就直接匹配name的值,如果匹配不上拿属性名称寻找,如果属性名称找不到按类型匹配
     @Resource
      private UserDao userDao111;

@Autowired注解:属于spring的规范

        //用属性名称userDao去spring的容器中寻找,如果有就注入
        @Autowired
        private UserDao userDao;

        
        //用属性名称userDao111去spring的容器中寻找,如果没有就按类型匹配,在spring容器中不能有多个相同类型的对象
        @Autowired
        private UserDao userDao111;

       //精确按照名称注入,如果名称不匹配就报异常,不会用类型注入
       @Autowired@Qualifier("userDao")//精确按照名称注入,
       private UserDao userDao;

@Inject @Named注解,此注解必须依赖jsr-330.jar,基本不会有人用。

1.注解的ioc

在spring的xml中用

     <bean id="" class="包名.类名">

在sring的annotation注解中

    <bean id="" class="包名.类名">

被替换成
@Controller v
@Service
@Repository
@Component
前提:需要在XML文件中添加


      <!-- 用来解析@Controller @Service @Respoitory @Component 注解
	     还能解析@Resource @Autowired @Inject
	   base-package="包名",多个包名用逗号间隔
	   如果写了<ontext:component-scan 就不用写<context:annotation-config>
	   因为在<ontext:component-scan已经包含了<context:annotation-config>
	-->
	<context:component-scan base-package="com.arno.dao"></context:component-scan>
	<context:component-scan base-package="com.arno.service"></context:component-scan>
	

@Controller 修饰在controller类上
@Service 修饰在业务的类上
@Repository 修饰在dao的类上
@Component 无法归controller和service和dao类别中
@Component 可以用来替换@Service和@Repository无法替换@Controller

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值