Spring框架IOC实现方式——xml + 注解 方式

xml+注解 结合模式:xml依然存在,所以sring IOC 容器的启动任然从加载xml开始,只是将第三方jar中的bean定义在xml中(如:德鲁伊数据库连接池),自己开发的备案定义使用注解。引入注解功能不需要映入额外的jar。

应用:

1、配置德鲁伊连接池

<!--引入外部资源文件-->
<context:property-placeholder location="classpath:jdbc.properties"/>

<bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource">
    <property name="driverClassName" value="${jdbc.driver}"></property>
    <property name="url" value="${jdbc.url}"></property>
    <property name="username" value="${jdbc.username}"></property>
    <property name="password" value="${jdbc.password}"></property>
</bean>
jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/spring_study
jdbc.username = root
jdbc.password = 12345

2、在相应的类上加注解

@Repository("accountDao")
public class JdbcAccountDaoImpl implements AccountDao {}
@Service("transferService")
public class TransferServiceImpl implements TransferService {}
@Component("connectionUtils")
public class ConnectionUtils {}

3、DI 依赖注⼊的注解实现⽅式
@Autowired 采取的策略为按照类型注⼊。
@Qualifier 告诉Spring具体去装配哪个对象。

public class TransferServiceImpl { 
	@Autowired
	@Qualifier("accountDao") 
	private AccountDao accountDao;
}

注:常用注解解释

  • @Component(“accountDao”),注解加在类上bean的id属性内容直接配置在注解后⾯如果不配置,默认定义个这个bean的id为类的类名⾸字⺟⼩写。
    针对分层代码开发提供了@Componenet的三种别名@Controller、@Service、@Repository分别⽤于控制层类、服务层类、dao层类的bean定义,这 四个注解的⽤法完全⼀样,只是为了更清晰的区分⽽已。
  • @Scope(“prototype”),默认单例,注解加在类上,对应xml中标签 scope。
  • @PostConstruct,注解加在⽅法上,该⽅法就是初始化后调⽤的⽅法,对应xml中标签 init- method。
  • @PreDestory,注解加在⽅法上,该⽅法就是销毁前调⽤的⽅法,对应xml中标签 destory- method。
  • @Resource ,注解由 J2EE 提供,需要导⼊包 javax.annotation.Resource,@Resource 默认按照 ByName ⾃动注⼊。
    如果同时指定了 name 和 type,则从Spring上下⽂中找到唯⼀匹配的bean进⾏装配,找不到则抛出异常。
    如果指定了 name,则从上下⽂中查找名称(id)匹配的bean进⾏装配,找不到则抛出异常。
    如果指定了 type,则从上下⽂中找到类似匹配的唯⼀bean进⾏装配,找不到或是找到多个, 都会抛出异常。
    如果既没有指定name,⼜没有指定type,则⾃动按照byName⽅式进⾏装配。
    Jdk 11中已经移除,如果要使⽤,需要单独引⼊jar包:
<dependency>
	<groupId>javax.annotation</groupId>
	<artifactId>javax.annotation-api</artifactId>
	<version>1.3.2</version>
</dependency>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值