常用的注解

3.注解

1.1注解开发定义bean

  • 使用@Component定义bean

@Component("bookDao")
public class BookDaoImpl implements BookDao{}
​
@Component
public class BookServiceImpl implements BookService{}
  • 核心配置文件中通过组件扫描加载bean

<context:component-scan base-package="com.wen"/>

1.2纯注解开发

  • java类代替Spring核心配置文件

    //声明当前类为Spring配置类
    @Configuration
    //设置bean扫描路径,多个路径书写为字符串数组格式
    @ComponentScan({"com.wen.service", "com.wen.dao"})
    public class SpringConfig {
    }
  • @Configuration注解用于设定当前类为配置

  • @Configuration注解用于设定扫描路径,此注解只能添加一次,多个数据请用数组格式

    @ComponentScan({"com.wen.service", "com.wen.dao"})
  • 读取Spring核心配置文件初始化容器对象切换为读取Java配置类初始化容器对象

            ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
    ​
      //AnnotationConfigApplicationContext加载Spring配置类初始化Spring容器
            ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);

1.3bean作用范围

  • 使用@Scope定义bean作用范围

    @Repository
    //@Scope设置bean的作用范围
    @Scope("singleton")
    public class BookDaoImpl implements BookDao {
    }
  • 使用@PostConstruct.@PreDestory定义bean生命周期

    @Repository
    //@Scope设置bean的作用范围
    @Scope("singleton")
    public class BookDaoImpl implements BookDao {
    ​
        public void save() {
            System.out.println("book dao save ...");
        }
        //@PostConstruct设置bean的初始化方法
        @PostConstruct
        public void init() {
            System.out.println("init ...");
        }
        //@PreDestroy设置bean的销毁方法
        @PreDestroy
        public void destroy() {
            System.out.println("destroy ...");
        }
    ​
    }
    ​

2.1依赖注入

  • 使用@Qualifier注解开启指定名称装配bean

@Service
public class BookServiceImpl implements BookService {
    //@Autowired:注入引用类型,自动装配模式,默认按类型装配
    @Autowired
    //@Qualifier:自动装配bean时按bean名称装配
    @Qualifier("bookDao")
    private BookDao bookDao;
​
    public void save() {
        System.out.println("book service save ...");
        bookDao.save();
    }
}

注意: @Qualifiler注解无法单独使用,必须配合@Autowired注解使用

  • 使用@Value实现简单类型注入

        //@Value:注入简单类型(无需提供set方法)
        @Value("${name}")
        private String name;
    ​
  • 加载properties文件

    • 使用@PropertySource注解加载properties文件

      @Configuration
      @ComponentScan("com.wen")
      //@PropertySource加载properties配置文件
      @PropertySource({"jdbc.properties"})
      public class SpringConfig {
      }   
    • 注意:路径仅仅支持单一文件配置,多文件请使用数组格式配置,不允许使用通配符*

2.2第三方bean管理,第三方依赖注入

  • 使用@Bean配置第三方bean

  • 使用Import注解手动加入配置类到核心配置,此注解只能添加一次,多个请使用数组格式

    @Configuration
    @ComponentScan("com.wen")
    //@Import:导入配置信息
    @Import({JdbcConfig.class})
    public class SpringConfig {
    }
    ​
    ​
    public class JdbcConfig {
        //1.定义一个方法获得要管理的对象
        @Value("com.mysql.jdbc.Driver")
        private String driver;
        @Value("jdbc:mysql://localhost:3306/spring_db")
        private String url;
        @Value("root")
        private String userName;
        @Value("root")
        private String password;
        //2.添加@Bean,表示当前方法的返回值是一个bean
        //@Bean修饰的方法,形参根据类型自动装配
        @Bean
        public DataSource dataSource(){
            DruidDataSource ds = new DruidDataSource();
            ds.setDriverClassName(driver);
            ds.setUrl(url);
            ds.setUsername(userName);
            ds.setPassword(password);
            return ds;
        }
    } 
  • 引用类型依赖注入

        @Bean
        public DataSource dataSource(BookDao bookDao){
            System.out.println(bookDao);
            DruidDataSource ds = new DruidDataSource();
            ds.setDriverClassName(driver);
            ds.setUrl(url);
            ds.setUsername(userName);
            ds.setPassword(password);
            return ds;
        }
  • 引用类型注入只需要为bean定义方法设置形参即可,容器会根据类型自动装配

3.1Xml配置与注解配置比较

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值