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

版权声明:Arno https://blog.csdn.net/yu342107056/article/details/85717522

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

猜你喜欢

转载自blog.csdn.net/yu342107056/article/details/85717522
今日推荐