【Spring】IOC案例从XML到注解
2020-07-27 16:43
309 查看
- 本例不展示业务代码。仅展示跟spring的使用相关的代码。
基于XML的IOC案例
- service 实现类
public class AccountServiceImpl implements AccountService { private AccountDao accountDao; public void setAccountDao(AccountDao accountDao) { this.accountDao = accountDao; } }
- dao 实现类
public class AccountDaoImpl implements AccountDao { private QueryRunner runner ; public void setRunner(QueryRunner runner) { this.runner = runner; } }
- spring配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <bean id="accountService" class="com.wei.service.impl.AccountServiceImpl" > <property name="accountDao" ref="accountDao" /> </bean> <bean id="accountDao" class="com.wei.dao.impl.AccountDaoImpl" > <!--根据set方法名决定--> <property name="Runner" ref="queryRunner" /> </bean> <bean id="queryRunner" class="org.apache.commons.dbutils.QueryRunner" scope="prototype" > <!--因为源码是ds,所以只能写ds--> <constructor-arg name="ds" ref="dataSource" /> </bean> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" > <property name="driverClass" value="com.mysql.jdbc.Driver" /> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/spring" /> <property name="user" value="root" /> <property name="password" value="root" /> </bean> </beans>
基于注解的IOC案例
- 需要导入context名称空间。上例XML已经加入了。后面我删除了bean.xml,仍然可以运行。混合使用的话,就需要spring配置文件,所以还是留着吧!
- service / dao 接口 实体类
public interface AccountService { //业务代码 } public interface AccountDao { //业务代码 } @Data public class Account implements Serializable { //字段 }
- service / dao 实现类
@Service("accountService") public class AccountServiceImpl implements AccountService { @Autowired private AccountDao accountDao; //业务代码 } @Repository("accountDao") public class AccountDaoImpl implements AccountDao { @Autowired private QueryRunner runner ; //业务代码 }
- config 类, 主配置类、子配置类、jdbcConfig.properties
@Configuration @ComponentScan(basePackages = "com.wei") @Import({JdbcConfig.class}) @PropertySource("classpath:jdbcConfig.properties") public class SpringConfiguration { } @Configuration public class JdbcConfig { //需要读取配置文件,读取的注解在主配置文件上(PropertySource) @Value("${jdbc.driver}") private String driver; @Value("${jdbc.url}") private String url; @Value("${jdbc.username}") private String username; @Value("${jdbc.password}") private String password; @Bean(name = "runner") public QueryRunner createQueryRunner(@Qualifier("dataSource") DataSource dataSource){ return new QueryRunner(dataSource); } @Bean("dataSource") @Scope("prototype") public DataSource createDataSource(){ ComboPooledDataSource ds = new ComboPooledDataSource(); ds.setDriverClass(driver);ds.setJdbcUrl(url);ds.setUser(username);ds.setPassword(password); return ds; } }
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/spring jdbc.username=root jdbc.password=root
Spring 整合 Junit
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration( classes = SpringConfiguration.class) public class Client { @Autowired private AccountService accountService; @Test public void findAll(){ List<Account> all = accountService.findAll(); System.out.println(all); } }
pow.xml
<packaging>jar</packaging> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>5.2.7.RELEASE</version> </dependency> <dependency> <groupId>javax.annotation</groupId> <artifactId>javax.annotation-api</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>commons-dbutils</groupId> <artifactId>commons-dbutils</artifactId> <version>1.7</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.40</version> </dependency> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.1</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> </dependencies>
相关文章推荐
- Spring学习(三) 基于xml和注解的IOC案例
- Spring(三)基于注解的IOC案例(新注解)
- Spring IOC 依赖注入的两种方式:XML和注解
- Spring中IOC配置xml实现和IOC注解实现
- spring基于注解的IOC环境搭建配置以及案例
- Spring学习(1):控制反转(IoC)和依赖注入(DI)的详解以及注解(annotation)开发入门案例
- Spring IOC注解开发案例以及遇到的问题
- Spring(三):IoC容器装配Bean(xml配置方式和注解方式)
- Spring5系列完整学习笔记以及相关代码(含Spring基本配置,IoC,AOP思想,依赖注入,注解开发Spring,静态/动态代理模式,MyBatis整合以及相关代码案例)
- Spring与IoC_基于注解的DI_XML的优先级要高于注解的
- 【Java.Spring.Core】【IoC】基于注解的Bean装配(非XML配置)
- 基于xml的ioc案例以及注解ioc案例
- spring2.5 xml以及注解的简单入门示例(ioc)
- JAVAWEB开发之Spring详解之——Spring的入门以及IOC容器装配Bean(xml和注解的方式)、Spring整合web开发、整合Junit4测试
- 主流框架二:Spring(3)Spring基于注解的IOC和案例分析
- spring IOC注解替换xml及spring和Junit整合
- spring 之ioc注解,案例,整合单元测试(02)
- Spring系列之 (六):Spring实现IOC的两种方式(XML和注解)
- Spring--IoC--基于注解的DI-XML的优先级高于注解
- Spring_IOC的配置(xml和注解两种方式)