spring笔记2——注解开发
注解开发定义bean
在程序开头,用@开头的注解代替applicationContext.xml文件中的bean标签配置内容。

搜索标签属于context命名空间

纯注解开发
在上面的注解开发定义bean中,用@Component代替了<bean>标签,纯注解开发是定义一个类来代替剩余的配置文件,即以下部分:

这部分可以用两句注解来代替。

虽然可以添加多个扫描路径,但常常将路径设置为一个范围较大的包,就不用一个个添加使用了注解定义bean的类所在的位置了(上图中的"com.itheima")。
SpringConfig.class中要import:

而在应用程序中,加载配置文件的语句要变成加载配置类的语句:

注解开发bean作用范围

注解开发bean生命周期

注解依赖注入——自动装配
spring注解功能是为了便利开发,故而对xml配置文件里的一些功能做了阉割。比如依赖注入的功能中,取消了构造器注入和setter注入。只留下了最便捷的自动装配。

(无参构造器也叫无参构造方法,在我们创建类时候,可以不用写构造方法,因为系统会默认给我们提供一个无参构造方法,如果我们自己写了无参构造方法,那么我们这个就将默认的覆盖了。 )
使用@Autowired注解来进行依赖注入时,默认进行按类型注入。
@Autowired可放在任意位置,且不再需要对dao对象的setter方法,因为其使用反射里的倒立反射给dao对象直接加值。

相当于是@Autowired的补充。

也叫做值类型注入。
注解读取properties文件
在SpringConfig.java里加注解:
![]()
随后在类文件里以"${}"的形式读取properties里的值:

可以以数组的形式读取多个properties文件:
![]()

注解开发管理第三方bean
由于不能把配置注解写在人家的源代码里,只能在配置类里里编程地去配置。
写在spring配置类里如下:

为什么使用DruidDataSource类而不是DataSource接口:因为以下的set方法都是DruidDataSource类独有的方法。
需要写bean的名字的情况不多,经常是拿类型来获取大多数情况完全够用的。 要写就写在@Bean()里。
关于jdbc的配置一般不写在spring的配置类里,而是另创建一个类,有两种写法:
1.在JdbcConfig里加上@Configuration注解,然后在SpringConfig里协商@ComponentScan告诉spring个地址让它去找这个配置:


2.SpringConfig:@Import注解内写上配置类,如果有多个就写上{}数组。


JdbcConfig:不加@Configuration注解
推荐使用第二种,可以精准地看出引入了哪些类。
第三方bean依赖注入


只给形参就完成了依赖注入。想注入哪个类就在形参里写哪个类,因为spring检测到了这个方法在配置第三方bean,便认为应该提供形参,于是在容器里寻找BookDao类型的bean,找到之后就将其自动装配(默认按类型装配)。
以后@Bean要经常用到,因为要整合框架,就会让spring管理别人写的类。如果整合的bean要东西:引用类型用方法形参,简单类型用成员变量。
XML配置与注解配置比较


浙公网安备 33010602011771号