Spring中IOC的Annotation案例(非底层)
来源:互联网 发布:手机视频变音软件 编辑:程序博客网 时间:2024/04/27 18:54
Spring中IOC的Annotation实现:
此处特别注意每个类中注释的注解及相关文字说明,可以更好的理解Spring中IOC的Annotation实现!
首先beans.xml中需要引入 context 的schema:
<?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.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">
在XML中配置Spring对Annotation的相关配置:
<!-- 打开Spring的Annotation的支持 --><context:annotation-config /><!-- 设定Spring去哪些包中找Annotation --><context:component-scan base-package="com.spring" />
完整的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.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"><!-- 打开Spring的Annotation的支持 --><context:annotation-config /><!-- 设定Spring去哪些包中找Annotation --><context:component-scan base-package="com.spring" /></beans>
User实体类:
package com.spring.model;public class User {public User() {super();}private int id;private String username;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}@Overridepublic String toString() {return "User [id=" + id + ", username=" + username + "]";}public User(int id, String username) {super();this.id = id;this.username = username;}}
IUserDao接口:
package com.spring.dao;import com.spring.model.User;public interface IUserDao {public void add(User user);public void delete(int id);public User load(int id);}
UserDao类:
package com.spring.dao;import org.springframework.stereotype.Component;import org.springframework.stereotype.Repository;import com.spring.model.User;//等于完成了<bean id="userDao" class="com.spring.dao.UserDao"/>//@Component("userDao")//@Component公共的创建bean的Annotation@Repository("userDao")//@Repository表示一般用于Dao的注入public class UserDao implements IUserDao {@Overridepublic void delete(int id) {System.out.println("删除了"+id);}@Overridepublic User load(int id) {System.out.println("load了User");return null;}@Overridepublic void add(User user) {System.out.println("添加了"+user);}}
IUserService接口:
package com.spring.service;import com.spring.model.User;public interface IUserService {public void add(User user);public void delete(int id);public User load(int id);}
UserService类:
package com.spring.service;import javax.annotation.Resource;import org.springframework.stereotype.Component;import org.springframework.stereotype.Service;import com.spring.dao.IUserDao;import com.spring.model.User;//@Component(value="userService")@Service("userService")//业务层一般用@Service注入public class UserService implements IUserService {private IUserDao userDao;public IUserDao getUserDao() {return userDao;}//默认通过名称注入,在JSR330中提供了@Inject来注入@Resourcepublic void setUserDao(IUserDao userDao) {this.userDao = userDao;}@Overridepublic void add(User user) {userDao.add(user);}@Overridepublic void delete(int id) {userDao.delete(id);}@Overridepublic User load(int id) {return userDao.load(id);}}
UserAction类:
package com.spring.action;import javax.annotation.Resource;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Component;import org.springframework.stereotype.Controller;import com.spring.model.User;import com.spring.service.IUserService;//@Component("userAction")@Controller("userAction")//MVC的控制层一般使用@Controller@Scope("prototype")//设置多例public class UserAction {private User user;private IUserService userService;private int id;public User getUser() {return user;}public void setUser(User user) {this.user = user;}public IUserService getUserService() {return userService;}@Resourcepublic void setUserService(IUserService userService) {this.userService = userService;}public int getId() {return id;}public void setId(int id) {this.id = id;}public void add(){userService.add(user);}public void delete(){userService.delete(id);}public void load(){userService.load(id);}}
测试类:
package com.spring.test;import org.junit.Test;import org.springframework.beans.factory.BeanFactory;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.spring.action.UserAction;import com.spring.model.User;public class TestSpring {//创建Spring工厂private BeanFactory beanFactory=new ClassPathXmlApplicationContext("beans.xml");@Testpublic void testUser(){UserAction ua=beanFactory.getBean("userAction",UserAction.class);User user=new User(1,"我叫spring");ua.setUser(user);ua.add();//单例的时候添加相同的内容,多例添加为nullUserAction ua1=beanFactory.getBean("userAction",UserAction.class);ua1.add();}}
运行结果及项目结果图:
9 9
- Spring中IOC的Annotation案例(非底层)
- spring中Ioc的Annotation写法(@Component)
- Spring中IOC的Annotation实现
- spring中IOC底层详解
- spring的IOC基于annotation
- spring的IOC基于annotation
- Spring IOC 的 Annotation 简析
- Spring中IOC的Annotation(注解)的相关应用方法
- SSH:通过注解(Annotation)的方式在Spring IoC容器中注入依赖
- Spring 2.5 注释(Annotation)驱动的 IoC 功能
- Spring的ioc入门案例
- 关于 Spring Ioc annotation 的心得体会
- Spring AOP IOC 的 Annotation 实现方式
- Spring IoC Annotation 的简单使用
- 关于Spring IOC的注解Annotation
- Spring学习(1):控制反转(IoC)和依赖注入(DI)的详解以及注解(annotation)开发入门案例
- Spring IOC底层原理
- 【Spring】IOC底层原理
- POJ 1423
- iOS 代码截屏和图像剪裁
- QML类型说明-Gradient
- C语言scanf函数详细解释
- 的韩国前金额非好几千个
- Spring中IOC的Annotation案例(非底层)
- Qt mysql数据库驱动编译
- fragment
- 简单的内容加密解密,在嵌入式上实现
- POJ 题目分类
- conky 配置变量表
- http协议详解
- 动态规划解LCS问题
- 简单的内容加密解密,在嵌入式上实现