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标签 出现的位置:类的上方 属性:
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>作用:自动按照类型注入。 特点:
主要有唯一的类型匹配就能注入成功,不关心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寻找注入原理图
作用:在自动按照类型注入的基础之上,再按照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"); } }作用:直接按照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:用于属性要注入的数据特点:利用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(); } }作用:用于改变bean的作用范围(与xml中bean配置的scope属性的作用和取值一样) 属性:
value:用于指定范围 -取值:singleton,prototype,request,session,globalsession