SpringMVC学习记录文章目录:
1、程序的耦合和解耦思路
2、使用springIOC解决程序耦合的前期准备
3、BeanFactory和ApplicationContext的区别及ApplicationContext接口的实现类
4、bean标签及其实例化的3种方式
5、bean的作用范围和生命周期
6、Spring的依赖注入
7、基于注解的IOC环境搭建
8、基于注解的IOC-常用注解(Spring2.5规范)
9、Spring常用注解-新(Spring2.5规范以上)
10、Spring整合Junit单元测试
11、AOP的相关概念
12、Spring中AOP的术语
13、SpringAOP常用标签解释说明
14、SpringAOP中切入点表达式说明
15、SpringAOP类型说明及环绕通知的特殊说明
16、基于xml的SpringAOP配置
17、SpringAOP常用注解
18、基于注解的SpringAOP配置
19、Spring中的JdbcTemplate
20、Spring中的事务控制
其他bean类型数据注入使用的注解
@Component
作用:用于创建对象,相当于配置了一个bean标签
出现的位置:类的上方
属性:
- value:指定bean的id
- 默认值:当类的短名首字母小写
由@Component衍生的三个注解:作用及属性和@Component一模一样(继承)
- @Controller:一般用于表现层的注解
- @Service:一般用于业务层的注解
- @Repository:一般用于持久层的注解
代码示例:
@Component
public class CustomerServiceImpl implement ICustomerService{
}
相当于:
<bean id="customerServiceImpl" class="com.service.impl.CustomerServiceImpl"></bean>
然后在xml配置文件配置:
<!-- 告知spring框架在,读取配置文件,创建容器时,扫描注解,依据注解创建对象,并存入容器中 -->
<context:component-scan base-package="com"></context:component-scan>
@Autowired
作用:自动按照类型注入。
特点:
- 主要有唯一的类型匹配就能注入成功,不关心bean的id
- 当我们使用注解注入时,set方法就不是必须的
- 当有多个类型匹配时,会使用当前变量名称customerDao作为bean的id,继续在容器中找,找到了,也能注入成功。找不到就报错。
代码示例:
@Service("customerService")
public class CustomerServiceImpl implements ICustomerService {
@Autowired
private ICustomerDao customerDao = null;
@Override
public void saveCustomer() {
System.out.println("业务层调用了持久层");
customerDao.saveCustomer();
}
}
@Autowired寻找注入原理图
@Qualifier
作用:在自动按照类型注入的基础之上,再按照bean的id注入
属性:
- value:用于指定bean的id(value可以省略,直接用双引号写)
特点:
- 它在给类成员注入数据时不能独立使用,但是给方法的形参注入数据时可以独立使用(说明是用哪个id进行注入的)。 代码示例:
@Service("customerService")
public class CustomerServiceImpl implements ICustomerService {
@Autowired
@Qualifier("customerDao1")
private ICustomerDao customerDao = null;
@Override
public void saveCustomer() {
System.out.println("业务层调用了持久层");
customerDao.saveCustomer();
}
}
@Service("customerDao1")
public class CustomerDaoImpl implements ICustomerDao {
@Override
public void saveCustomer() {
System.out.println("持久层保存了客户1");
}
}
@Resource
作用:直接按照bean的id注入
属性:
name:用于指定bean的id(不可以省略)
代码示例:
@Service("customerService")
public class CustomerServiceImpl implements ICustomerService {
@Resource(name="customerDao1")
private ICustomerDao customerDao = null;
@Override
public void saveCustomer() {
System.out.println("业务层调用了持久层");
customerDao.saveCustomer();
}
}
基本类型和String类型注入数据的注解
@Value
作用:用于注入基本类型和String类型
属性:
- value:用于属性要注入的数据
特点:利用spring的el表达式读取properties文件中的配置
代码示例:
@Service("customerService")
public class CustomerServiceImpl implements ICustomerService {
@Value("李小龙")
private String name;
@Resource(name="customerDao1")
private ICustomerDao customerDao = null;
@Override
public void saveCustomer() {
System.out.println("业务层调用了持久层"+name);
customerDao.saveCustomer();
}
}
改变作用范围的注解
@Scope
作用:用于改变bean的作用范围(与xml中bean配置的scope属性的作用和取值一样)
属性:
- value:用于指定范围
-取值:singleton,prototype,request,session,globalsession