Spring IoC 实例
来源:互联网 发布:威少刷数据 编辑:程序博客网 时间:2024/05/15 14:31
方式一:配置文件实现Bean实例化和依赖注入
BaseDao.java
package com.demo.spring;public interface BaseDao { public void insert(); public void delete(); public void update(); public void select();}
ObjectUserFactory.java
package com.demo.spring;public class ObjectUserFactory { public UserDao getUserDao() { return new UserDao(); }}
StaticUserFactory.java
package com.demo.spring;public class StaticUserFactory { public static UserDao getUserDao() { return new UserDao(); }}
UserDao.java
package com.demo.spring;public class UserDao implements BaseDao { @Override public void insert() { System.out.println("insert()"); } @Override public void delete() { System.out.println("delete()"); } @Override public void update() { System.out.println("update()"); } @Override public void select() { System.out.println("select()"); }}
UserService.java
package com.demo.spring;public class UserService { private UserDao userDao; public UserService() { super(); } public UserService(UserDao userDao) { super(); this.userDao = userDao; } public UserDao getUserDao() { return userDao; } public void setUserDao(UserDao userDao) { this.userDao = userDao; }}
applicationContext.xml
<?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="userDao" class="com.demo.spring.UserDao"></bean> <!-- 静态工厂实例化配置 --> <bean id="userDaoByStatic" class="com.demo.spring.StaticUserFactory" factory-method="getUserDao"></bean> <!-- 动态工厂实例化配置 --> <bean id="objectUserFactory" class="com.demo.spring.ObjectUserFactory"></bean> <bean id="userDaoByObject" factory-bean="objectUserFactory" factory-method="getUserDao"></bean> <!-- 构造器注入 --> <bean id="userServiceByContructor" class="com.demo.spring.UserService"> <constructor-arg name="userDao" ref="userDao"></constructor-arg> </bean> <!-- Setter注入, 必须有无参构造 --> <bean id="userServiceBySetter" class="com.demo.spring.UserService"> <property name="userDao" ref="userDao"></property> </bean></beans>
UserDaoTest.java
package com.demo.test;import org.junit.Before;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.demo.spring.BaseDao;import com.demo.spring.UserDao;public class UserDaoTest { public ApplicationContext context; @Before public void init() { context = new ClassPathXmlApplicationContext("applicationContext.xml"); } @Test public void test1() { System.out.println("--------------无参构造实例化-----------------"); BaseDao userDao = context.getBean("userDao", BaseDao.class); // 无参构造实例化 userDao.insert(); BaseDao userDao1 = context.getBean("userDao", UserDao.class); userDao1.delete(); UserDao userDao2 = context.getBean("userDao", UserDao.class); userDao2.update(); } @Test public void test2() { System.out.println("--------------静态工厂实例化-----------------"); BaseDao userDao = context.getBean("userDaoByStatic", BaseDao.class);// 静态工厂实例化 userDao.insert(); BaseDao userDao1 = context.getBean("userDaoByStatic", UserDao.class);// 静态工厂实例化 userDao1.delete(); UserDao userDao2 = context.getBean("userDaoByStatic", UserDao.class);// 静态工厂实例化 userDao2.update(); } @Test public void test3() { System.out.println("--------------动态工厂实例化-----------------"); BaseDao userDao = context.getBean("userDaoByObject", BaseDao.class);// 动态工厂实例化 userDao.insert(); BaseDao userDao1 = context.getBean("userDaoByObject", UserDao.class);// 动态工厂实例化 userDao1.delete(); UserDao userDao2 = context.getBean("userDaoByObject", UserDao.class);// 动态工厂实例化 userDao2.update(); }}
UserServiceTest.java
package com.demo.test;import org.junit.Before;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.demo.spring.UserService;public class UserServiceTest { public ApplicationContext context; @Before public void init() { context = new ClassPathXmlApplicationContext("applicationContext.xml"); } @Test public void test() {// 构造器注入 UserService userService = context.getBean("userServiceByContructor", UserService.class); userService.getUserDao().insert(); } @Test public void test2() {// setter注入,必须有无参构造 UserService userService = context.getBean("userServiceBySetter", UserService.class); userService.getUserDao().delete(); }}
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.demo</groupId> <artifactId>maven-spring</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <!-- junit单元测试 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- spring核心包 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.0.RELEASE</version> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.7</source> <target>1.7</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>3.0.1</version> <executions> <execution> <id>attach-sources</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build></project>
配置文件方式代码源码
方式二:注解方式实现Bean实例化和依赖注入
BaseDao.java
package com.demo.spring;public interface BaseDao { public void insert(); public void delete(); public void update(); public void select();}
UserDao.java
package com.demo.spring;import org.springframework.stereotype.Repository;@Repositorypublic class UserDao implements BaseDao { @Override public void insert() { System.out.println("insert()"); } @Override public void delete() { System.out.println("delete()"); } @Override public void update() { System.out.println("update()"); } @Override public void select() { System.out.println("select()"); }}
UserService.java
package com.demo.spring;import javax.annotation.Resource;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;@Servicepublic class UserService { // @Resource // 写在字段前面,可以没有setter方法,默认名称优先 @Autowired // 写在字段前面,可以没有setter方法,默认类型优先 private UserDao userDao; public UserDao getUserDao() { return userDao; }}
applicationContext.xml
<?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"> <context:component-scan base-package="com.demo.spring"></context:component-scan></beans>
UserDaoTest.java
package com.demo.test;import org.junit.Before;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.demo.spring.BaseDao;import com.demo.spring.UserDao;public class UserDaoTest { public ApplicationContext context; @Before public void init() { context = new ClassPathXmlApplicationContext("applicationContext.xml"); } @Test public void test1() { System.out.println("--------------无参构造实例化-----------------"); BaseDao userDao = context.getBean("userDao", BaseDao.class); // 无参构造实例化 userDao.insert(); BaseDao userDao1 = context.getBean("userDao", UserDao.class); userDao1.delete(); UserDao userDao2 = context.getBean("userDao", UserDao.class); userDao2.update(); }}
UserServiceTest.java
package com.demo.test;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import com.demo.spring.UserService;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = { "classpath*:applicationContext.xml" })public class UserServiceTest { @Autowired private UserService userService; @Test public void test() { userService.getUserDao().insert(); }}
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.demo</groupId> <artifactId>maven-spring</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <!-- junit单元测试 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.2.0.RELEASE</version> <scope>test</scope> </dependency> <!-- spring核心包 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.2.0.RELEASE</version> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.7</source> <target>1.7</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>3.0.1</version> <executions> <execution> <id>attach-sources</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build></project>
注解方式代码源码
阅读全文
0 0
- spring IOC 实例
- Spring的IoC实例
- spring实例应用(IoC)
- spring ioc简单实例
- Spring----IOC实例
- Spring IoC 实例
- spring实例化IOC容器
- Spring的IOC简单实例
- 实例化Spring IoC容器
- 实例化spring IoC容器
- Spring中Ioc入门实例
- Spring IoC原理实例分析
- IoC---spring(实例解析)
- Spring IoC(控制反转)【IoC使用实例】
- Spring IoC容器之---通过实例理解什么是IoC
- Spring中IoC的入门实例
- Spring中IoC的入门实例
- Spring中IoC的入门实例
- 计算机网络常见面试题总结(一)
- FreeRTOS系列学习笔记二---FreeRTOS内核详解LIST
- poj2402
- 剑指offer-06:重建BinaryTree
- vim 跳转到某一行
- Spring IoC 实例
- 递推|迭代|穷举案例
- js 实现浏览器全屏效果(F11)
- Redis持久化机制原理分析与解惑-为什么Redis进行RDB持久化数据时,新起一个进程而不是在原进程中起一个线程
- 生成可重集的排列
- 深入了解php底层机制
- C++ :: 的用法小结
- spring 整合 ehcache失败记录
- Maven总结