Spring学习笔记2——依赖注入——黑马程序员


本章内容是本人学习过程中的记录,所以有些地方有些杂乱,欢迎一起谈论交流~


Bean的作用范围和生命周期相关的注解

bean的作用范围注解

@Scope单例还是非单例模式(singleton、propotype)

控制bean的生命周期的注解

@PostConstruct初始化bean

@PreDestory销毁bean

注解开发——依赖注入

自动装配

@Autowired 
@Qualifier
@Value

读取properties文件@PropertySource

@PropertySource({"application.properties"})
    @Autowired        //代替set方法
    @Qualifier("bookDao2")        //有多个bean确定指的是哪个
 
    private BookDao bookDao;

//    public void setBookDao(BookDao bookDao) {
//        this.bookDao = bookDao;
//    }

//bean中部分代码

@Value("${name}")//name写死要到配properties文件中赋值,再到自己创建的配置文件中注解声明(见下图)
                 //实现简单类型注入
private String name;
public void save() {
    System.out.println("book dao save...."+name);
}

 

 第三方bean管理

普通类型直接@Value就可以

引用类型向方法中传递其对应类型参数就可以

两种类型的管理方式有两种分别是导入式和扫描式,推荐导入式(Import)

在config类中写@Import({JdbcConfig.class})导入
public class JdbcConfig {
    //定义一个方法获得要管理的对象
    //添加@Bean表示当前方法的返回值是一个Bean
    @Bean("dataSource")
    public DataSource dataSource(){
        DruidDataSource ds=new DruidDataSource();
        ds.setDriverClassName("com.mysql.jdbc.Driver");
        ds.setUrl("jdbd:mysql://localhost:3306/spring_db");
        ds.setUsername("root");
        ds.setPassword("root");
        return ds;
    }
}


在APP类中调用
    AnnotationConfigApplicationContext ctx=new    AnnotationConfigApplicationContext(SpringConfig.class);

    DataSource ds=ctx.getBean(DataSource.class);
    System.out.println(ds);

导入方式有两种:导入式(Import)和扫描式(ComponentScan)

引用类型注入只需要为Bean定义方法设置形参即可,容器会根据类型自动装配对象。

/**JdbcConfig **/
public class JdbcConfig {

    @Value("com.mysql.jdbc.Driver")
    private String driver;
    @Value("jdbd:mysql://localhost:3306/spring_db")
    private String url;
    @Value("root")
    private String userName;
    @Value("root")
    private String passWord;

    //定义一个方法获得要管理的对象
    //添加@Bean表示当前方法的返回值是一个Bean
    @Bean("dataSource")
    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;
    }
}


/**BookDaoimpl **/
@Repository("bookDao")
@Scope("singleton")

public class BookDaoimpl implements BookDao {
    @Value("${name}")//name写死要到配properties文件中配置,再在配置文件中注解声明
    private String name;
    public void save() {
        System.out.println("book dao save...."+name);
    }
}

 注解开发总结

功能XML配置注解
定义bean

bean标签:id属性、class属性

@Comonent

@Controller

@Service

@Repository

@ComponentScan

设置依赖注入

setter注入(set方法):引用/简单

构造器注入(构造方法):引用/简单

自动装配

@Autowired

@Qualifier

@Value

配置第三方bean

bean标签

静态工厂、实例工厂、FactoryBean

@Bean
作用范围scope属性@Scope
生命周期标准接口:init-method、destroy-method

@PostContructor

@PreDestroy

  • 14
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值