IOC注解

@Componet注解

  • 作用 :把资源交给spring管理。相当于在xml中配置了一个bean
  • 属性 :指定bean的ID,如果不指定值,默认是当前类名首字母小写
    ##@Controller @Service @Repository
    他们三个注解都是针对一个的衍生注解,他们的作用及属性都是一模一样的。
    他们只不过是提供了更加明确的语义化。
    ###@Controller:一般用于表现层的注解
    ###@Service: 一般用于业务层的注解
    ###@Repository: 一般用于持久层的注解

    注意:此处测试时,要把扫描的包定义为cn.itcast,不然的其它包的注解就不能识别了

@Value

  • 作用 : 注入基本类型数据和String类型数据
  • 属性 : value 用于指定值

@Autowired

  • 自动按照类型注入。当使用注解注入属性时,set方法可以省略。只能注入其它bean类。当有多个类型匹配时,使用要注入的对象变量名称作为bean的ID,在spring容器查找,找到了也可以注入成功。找不到就报错。
  • 测试发现,UserServiceImpl中注入的还是第一个UserDaoImpl,因为当有多个bean都满足的情况下,优先注入bean的id与属性的名字一样的bean;想指定注入UserDaoImpl2,需要使用@Qualifier注解根据名字来注入

@Qualifier

  • 作用 :在自动按照类型注入的基础上,再按照bean的ID注入。它给字段注入时不能单独使用,必须和@Autowired一起使用;但是给方法注入时可以单独使用
  • 属性 :指定bean的ID

@Resource

  • 作用 :直接按照bean的ID注入。它只能其它bean类型
  • 属性 :name指定bean的ID
    @Resource(name="beanid")

@Scope

  • 作用 :指定bean的作用范围
  • 属性 :value 指定范围的值 取值:singleton(单例)prototype(多例)request session globalsession

@PostConstruct

  • 加在方法上,指定bean对象创建好之后,调用该方法初始化对象,类似于xml的init-method方法。修改UserServiceImpl类,在其中增加一个init方法,在该方法上指定@PostConstruct注解

@PreDestory

  • 加在方法上,指定bean销毁之前,调用该方法,类似于xml的destory-method方法。修改UserServiceImpl类,在该类中增加一个destroy方法,在该方法上加@PreDestroy注解

XML和注解比较

  • 注解的优势 :配置简单,维护方便。(我们得到了类,就相当于找到了配置)
  • XML的优势 :修改时,不用改源码,不涉及重新编译和部署

Spring整合JUnit

首先需要引入spring test依赖

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("classpath:applicationContext.xml")
    public class TestIOC {

    @Autowired
    private UserService userService;

    @Test
    public void test1(){
    userService.saveUser();
        }
    }

- @RunWith注解:这个是指定使用的单元测试执行类,这里就指定的是SpringJUnit4ClassRunner.class;
- @ContextConfiguration注解:这个指定spring配置文件所在的路径,可以同时指定多个文件;

猜你喜欢

转载自blog.csdn.net/luoxiao2554/article/details/80427779