基于注解的IOC-常用注解(Spring2.5规范)

mac2024-06-30  58

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
最新回复(0)