zoukankan      html  css  js  c++  java
  • day38 17-Spring的Bean的属性注入:注解方式

    这个类已经可以由Spring控制反转了,那么属性呢?属性分为普通属性和对象属性两部分。

     

    JSR是一个组织,和W3C一样是定义一些标准的.它里面也定义了一歌注解,Spring对这个注解也是支持的.其实这个@Resource注解和@AutoWired以及@Qualifier整合到一起它俩的功能是类似的。


    package cn.itcast.spring3.demo1;
    
    import javax.annotation.Resource;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.stereotype.Component;
    import org.springframework.stereotype.Service;
    
    /**
     * 注解的方式装配Bean.
     * @author zhongzh
     *
     */
    //在Spring配置文件中<bean id="userService" class="cn.itcast.demo1.UserService">
    //其实也需要核心配置文件,只不过不是用来装配bean了,你得告诉Spring需要去哪些包下面去扫描.它得扫描到这些注解才行.它得去哪里扫描你得告诉人家才行
    //@Component(value="userService")
    //@Component("userService")
    @Service(value="userService")//Service层,默认把这个类UserService交由Spring来管理了
    public class UserService {
        //如果是普通属性,可以使用value注解来注入了
        @Value(value="itcast")
        private String info;
        //@Autowired//如果是复杂类型或者是对象属性使用@Autowired这个注解:自动装配默认使用类型注入.
        //@Autowired(required=false)//AutoWired的属性required=false忽略异常。默认required=true出异常就终止了.required=false依然可以注入,但是出异常的话注入的是null值.
        //required属性出异常不管了,required=false出异常程序照样往下执行,成不成功另外说了.默认required=true,有异常就不注入就停止了.
        //@Qualifier("userDao")
        //@Autowired(required=true)//默认,一般不去改这个值
        //@Qualifier("uDao")//按名称注入,@AutoWired+@Qualifier()
        @Resource(name="userDao")//等于@AutoWired+@Qualifeied,按名称注入
        private UserDao userDao;
         public void sayHello(){
             
             //System.out.println("Hello Spring Annotation.....");
             System.out.println("Hello Spring Annotation....."+info);
         }
        @Override
        public String toString() {
            return "UserService [info=" + info + ", userDao=" + userDao + "]";
        }
         
    }
    package cn.itcast.spring3.demo1;
    
    //import org.springframework.stereotype.Component;
    import org.springframework.stereotype.Repository;
    
    
    //Dao这个类正常也应该交由Spring管理.
    //@Component
    //@Repository//按类型注入
    @Repository("userDao")//按名称注入
    
    public class UserDao {
    
    }
    package cn.itcast.spring3.demo1;
    
    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    //注解的方式:都是将类装载到容器中.
    public class SpringTest1 {
       @Test
       public void demo1(){
           
          ApplicationContext  applicationContext  = new ClassPathXmlApplicationContext("applicationContext.xml");
          UserService userService = (UserService) applicationContext.getBean("userService");
          //userService.sayHello();
           System.out.println(userService);
       }
        
        
    }
    <?xml version="1.0" encoding="UTF-8"?>
    <!-- 基于注解的开发需要引入context命名空间。它就是用来配置去扫描哪些包的. -->
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:p="http://www.springframework.org/schema/p"
           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">
    <context:annotation-config></context:annotation-config><!-- XML和注解混搭的时候用的 -->
    <!-- 告诉Spring你要扫描哪些包下的东西 -->
    <!--  
    <context:component-scan base-package="cn.itcast.spring3.demo1">
    
    -->
    <context:component-scan base-package="cn.itcast.spring3.demo1"><!-- 纯注解用扫描的就行 -->
    
    
    
    
    
    
    
    
    
    
    
    </context:component-scan>
    
    
    
    </beans>
  • 相关阅读:
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    thinkphp使用foreach遍历的方法
    php中foreach中使用&的办法
    thinkphp做搜索功能
    数据库虚拟主机目录的配置文件
    网页响应式设计原理
    数据库常见远程连接问题
  • 原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/6727959.html
Copyright © 2011-2022 走看看