package com.atguigu.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
/**
* java的配置类,替代xml配置文件
* 1.包扫描注解配置
* 2.引用外部的配置文件
* 3.声明第三方依赖的bean组件
* 步骤1:添加@Configuration代表我们是配置类
* 步骤2:实现上面的三个功能注解
*/
//单个包可以省略{}和value,多个包需要加上{}
@ComponentScan({"com.atguigu.ioc_01"})
@PropertySource(value = "classpath:jdbc.properties")
@Configuration
public class JavaConfiguration {
@Value("${atguigu.url}")
private String url;
@Value("${atguigu.driver}")
private String driver;
@Value("${atguigu.username}")
private String username;
@Value("${atguigu.password}")
private String password;
//实现具体的实例化过程
/**
* <bean 用 一个方法代替
*
* 方法的返回值类型 == bean组件的类型或者它的接口和父类
* 方法的名字 == bean中的id值
* 方法体可以自定义实现过程即可
*
* 最重要的一步:@Bean,会真正让配置类的方法创建的组件存储到ioc容器!!
*
* 问题1:beanName的问题
* 默认:方法名
* 指定:name/value属性起名字,覆盖方法名
* 问题2:周期方法的问题
* 原有注解方案:@PostConstruct 和 @PreDestroy注解指定
* bean属性指定:initMethod/destroyMethod指定
*
*/
@Bean(name = "ergouzi",initMethod = "",destroyMethod = "")
public DruidDataSource dataSource(){
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl(url);
dataSource.setDriverClassName(driver);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
}
尚硅谷spring笔记@Bean注解
最新推荐文章于 2024-06-27 15:25:28 发布