为什么要用注解来进行开发,只用配置文件不是很好?
Spring是一个轻代码而重配置的框架,配置比较繁重,影响开发效率,所以注解开发死一种趋势,注解代替xml配置文件可以简化配置,提高开发效率。
现在的注解分为原始注解还有新注解:
原始注解主要是替代Bean的配置:
下面我们来演示注解怎么替代的配置文件的
@Component 和 @Controller, @Service, @Repository的作用都是一样的,都是实例化Bean,也就是来创建对象的,但是后面的三个具有语义化,因为后面三个分别用于不同的层,到时候我们可以直接通过看这个注解,就能知道这个类属于什么层的。当你不知道一个类属于什么层的时候就可以直接用@Component
下面代码实例:(@Component )
括号里面就相当于是Bean里面的ID
通过上面的注解我们根本不知道是哪一个层次的代码,所以我们就用可读性强的注解
看见用的是Repository我们就知道它是DAO层的
看见Service我们就知道是Service层的
其他一个WEB层的也同理
把Component改成每个层次相应的获得Bean实例的注解,同样也能运行出来
其实这前面的这几个就相当于是配置文件的Bean,他们经过组件扫描相当于也被加入到配置文件中去了,只是你看不见
通过注解的依赖注入:
@Autowired自动注入(根据下面的数据类型来寻找相应的)在spring容器内进行匹配的,如果在配置文件中有多个的话,就不行
@Qualifier 指定注入哪个(在spring容器中通过id值进行匹配的),参数就填你要注入对象的ID名字,注意的是@Qualifier要结合@Autowired一起使用
但是我们通过注解的方式可以把set方法给删除掉也能进行注入,只要我们把注解放在需要依赖注入的属性的上面就可以了,看运行结果同样是能够运行出来
依赖注入还可以通过@Resource();来进行注入,这个就相当于@Autowired+@Qualifier的总和
通过注解来注入普通属性:
就是通过@value就可以进行注入了
我们发现像这样注入,不如直接给这个driver直接赋值
首先我们事先已经在容器中导入好了jdbc.propreties文件(里面存储的东西是通过键值对的),结下来我们通过el表达式来进行注入(这样也相当于解耦了,以后修改不需要找到源码,直接去找dbc.propreties就可以了)
对于@scope()在配置文件中是用来控制单例多例的,这里同样也是,里面有两个参数
我们写好了注解,也要告诉spring配置文件,其实注解最后还是变成了配置文件(个人理解),因为你用注解相当于有人给你在配置文件中自动编写Bean,依赖注入也是同样的,只是我们看不见。
下面我们就给spring配置组件扫描,作用是指定哪个包及其子包下的Bean需要进行扫描以便识别使用注解配置的类,字段和方法。
base-package里面的参数就填你要扫描的那个包