**spring基于注解的IOC以及IOC的案例 **
1 spring中的ioc常用注解
2 案列使用xml方式和注解方式实现单表的crud
持久层技术选择:d’butils
3 改造基于注解的ioc方式,使用纯注解的方式
spring的一些新注解使用
4 spring与junit的整合
基于注解的ioc配置
注解配置和xml配置实现的功能都是一样的,都是降低程序间的耦合,只是形式不一样。
* <!-- <bean id="accountService" class="com.itheima.service.impl.AccountServiceImpl"></bean>-->
- 用于创建对象的
-
他们的作用就是xml配置文件中编写一个bean标签实现的功能是一样的
- 用于注入数据的
-
他们的作用就喝在xml配置文件中的bean标签中的property标签一致
- 用于改变作用范围的
-
他们的作用就和在bean标签中使用scope属性实现的功能是一样的
- 和生命周期相关的
-
他们的作用就和在bean标签中使用init-methods 和 destroy-methods的作用是一样的
component注解
用于把当前类对象存入spring容器中
属性是value 用于指定bean的id 当我们不写时,它的默认值是当前类名,且首字母小写
aop是注释使用的必须jar包
@Component
public class AccountServiceImpl implements IAccountService {
private IAccountDao accountDao ;
public AccountServiceImpl(){
System.out.println("对象创建了");
}
public void saveAccount(){
accountDao.saveAccount();
}
}
标识这个类生成一个对象存入spring的容器中
下一步还需要在bean.xml中告知spring去扫描包
配置标签不再beans中,名称为context名称空间和约束
第一步加载:名称为context名称空间和约束
第二步引入:引入标签中配置扫描的包
<context:component-scan base-package="com.itheima"></context:component-scan>
可以在@componennt这个标签后面 添加value 相当于指定属性
@Component(value = "mmz")
三个注解
Controller 表现层
Service 业务层
Respository 持久层
以上三个注解它们的作用和属性与component是一模一样的。它们三个是spring框架为我们明确提供三层使用的注解。使我们的三层对象更加清晰
IAccountDao adao = (IAccountDao) ac.getBean("accountDaoImpl");
System.out.println(adao);
使用repository注解标识的bean
@Repository
public class AccountDaoImpl implements IAccountDao {
public void saveAccount(){
System.out.println("保存了账户");
}
}
注入数据的注解
Autowired 作用 :自动 按照类型注入,只要容器有惟一的bean对象类型和要注入的变量类型匹配就可以注入成功
如果ioc没有任何bean类型和要注入的变量类型匹配报错
如果ioc有多个类型匹配时:
出现位置:可以是成员变量,也可以是方法上
细节:在使用注解注入时,set方法就不是必须的了
springIOC是一个map结构
key是String类型 value是Object类型
Qualifier:
作用:在按照类型的注入基础之上在按照名称注入。它给类成员注入时,不能单独使用,但是给方法参数注入的时候可以。
属性:value用于指定注入bean的id
不能单独使用
Resource 作用:直接按照bean的id注入,它可以独立使用
但是他的问题,不是value,而是name了
以上的三个注解都只能注入其他bean类型数据,基本类型,String类型无法使用上述注解实现
另外,集合类型的注入只能通过xml类实现
@Value 用于基本类型和String类型的注解
属性 value:用于指定数据的值,它可以使用spring中的EL el表达式
SPel写法也是 ${表达式}
用于改变作用范围
Scope 作用:用于指定bean的作用范围
属性: value:指定范围的取值。常用取值,singleton prototype 对应单例多例
和生命周期相关
PreDestroy 作用:用于销毁方法
PostConstruct :用于初始化方法