spring注解开发-原始注解-新注解-介绍与详解

Spring注解开发
  1. Spring原始注解

    1. Spring是轻代码而重配置的框架,配置比较繁重影响开发,所以注解开发算是一种趋势,注解代替xml配置文件可以简化配置,提高开发效率

    2. 该原始注解主要替代的配置

    3. 注解类型及说明

      1. 注解说明
        @Component使用在类上用于实例化Bean
        @Controller使用在web层类上用于实例化Bean
        @Service使用在service层类上用于实例化Bean
        @Repository使用在dao层类上用于实例化Bean
        @Autowired使用在字段上用于根据类型进行依赖注入
        @Qualifier结合@Autowired一起使用用于根据名称进行依赖注入
        @Resource相当于@Autowired+@Qualifier,按照名称进行注入
        @Value注入普通属性
        @Scope标注Bean的作用范围
        @PostConstruct使用在方法上标注该方法是Bean的初始化方法
        @PreDestory使用在方法上标注该方法时Bean的销毁方法
    4. 原始配置

      <bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"></bean>
          <bean id="userService" class="com.itheima.service.impl.UserServiceImpl">
              <property name="userDao" ref="userDao"></property>
          </bean>
      
    5. 如何取消这里的userDaoImpl的spring和UserServiceImpl来使用注解替换

      package com.itheima.dao.impl;
      
      import com.itheima.dao.UserDao;
      import org.springframework.stereotype.Component;
      // 相当于<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"></bean>
      //@Component("userDao")
      @Repository("userDao")
      public class UserDaoImpl implements UserDao {
          public void save() {
              System.out.println("save running..");
          }
      }
      
      
      package com.itheima.service.impl;
      
      import com.itheima.dao.UserDao;
      import com.itheima.service.UserService;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.beans.factory.annotation.Qualifier;
      import org.springframework.stereotype.Component;
      //<bean id="userService" class="com.itheima.service.impl.UserServiceImpl"></bean>
      @Service("userSerivce")
      //@Component("userSerivce")
      public class UserServiceImpl implements UserService {
          //<property name="userDao" ref="userDao"></property>
          @Autowired // 按照数据类型从spring容器中类型进行匹配的
          // @Qualifier("userDao") 这里同样也可以省去 如果 不想按照类型匹配则可以通过id进行匹配并且此处的Autowired() 和 Qulifier
          // 后者这里直接使用@Resource(name="userDao") 相当于Autowired() 和 Qulifier()
          private UserDao userDao;
          //
          public void setUserDao(UserDao userDao) {
              this.userDao = userDao;
          }
          // 这里注意如果使用xml配置的这里一定要写上
          //如果使用spring注解则这里可以不写
      
          public void save() {
              userDao.save();
          }
      }
      // 此时执行会发现报错 原因时spring还不知道这些需要进行spring的注解扫描即配置组件扫描
      
  2. 配置组件扫描

    1. 使用注解开发时候需要在applicationContext.xml中进行最近扫描

          <context:component-scan base-package="com.itheima"></context:component-scan>
      
  3. 注入普通数据类型

    @Value("itcast")
    private String driver;
    //在这里我们 的@vaue()用途
    @Value("${jdbc.driver}")
    private String driver;
    
  4. 单例多例的注入

    @Service("userSerivce")
    //@Component("userSerivce")
    @Scope("singleton") // 单例
    //@Scope("prototype") // 多例
    public class UserServiceImpl implements UserService {}
    
  5. 初始化注解,销毁方法

    1. @PostConstruct //对象初始化方法
      @PreDestroy //对象销毁方法
      
  6. Spring新注解

    1. 注解说明
      @Configuration用于指定当前类是一个Spring配置容器,当创建容器时会从该类上加载注解
      @ComponentScan用于指定Spring在初始化容器时需要扫描的包,作用和Spring的xml配置文件中<context:component-scan base-package=“com.itheima”/>一样
      @Bean使用在方法上,标注将该方法的返回值存储在Spring容器中
      @PropertySource用于加载.properties文件中的配置
      @Import({x,x,x,x})用于导入其他配置类 是一个数组
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值