#注解的方式注入bean

在spring.xml中一个命名空间要对应两个网址
在spring.xml配置文件中使用` context:annotation-config/标签来开启注解注入

##1. @Autowired
这个注解由spring框架提供,要写在属性或者set方法上面
默认通过bean的类型进行匹配
在IOC容器里面一个类只有一个对象,因此由IOC容器创建的对象是单例的,所以IOC只要找到这个对象的类型就可以创建这个类的对象,不用通过bean标签中的id属性来创建对象

##2. @Resource
这个注解由JDK提供,要写在属性或者set方法上面
默认通过名字匹配,也就是说通过spring.xml中bean标签中id的属性来进行匹配
如果不指定名字,则通过类型匹配,由此可见 @Resource更加灵活

#bean的自动扫描

在多文件加载时,也就是说在spring.xml配置文件中要配置多个bean标签时,为了简化多个bean标签的写法时,我们可以采用自动包扫描的方式来创建多个bean

#分层思想

##1. @Repository
这个注解一般会用在dao层中,dao层是指数据访问层,具体对应数据库中的某张表,某个实体的CRUD(某个实体的增删改查);

##2. @Service
由注解的名字也能看出这个注解一般加在Service层中,Service层一般指业务层或者叫逻辑层,在这一层中我们主要来获取页面中传递过来的参数,然后对参数做一些非空校验等其它增强程序健壮性的功能,这一层我们一般会调取dao层中的方法或者参数

##3. @Controller
这一层是控制层也叫web层,主要针对各个模块之间的流程控制

备注:各个层级之间的关系一般为: Controller层调用Service层, Service层调用 Repository层(dao层)后面还会用到视图层

##4. @Component
这层是任意层,这个注解可以代替上面三个注解,如果我们用这个注解,去代替所有其它层的注解,假如我们有很多层,都用这个注解来代替的话,这样会混淆,分层思想因而也就不存在了

以上4个注解 我们只需要在对应的个层级上加上相应的注解,然后在spring.xml中加入包扫描标签,这些层级的类就会统一由spring框架进行管理,注解中可以通过value属性来指定获取的bean,但是我们加了自动扫描所以一般不会再特意指定匹配的bean

在开发时一定要遵循这些规范,我们写的代码才能更优雅

id属性里面的类名一般是类名首字母小写,也叫类的别名