Spring中获取对象
Spring是一个非常主流,而且是好用的框架。提供管理对象的容器,提供事务的支持,缓存,权限认证(往往不用)。用来集成hibernate等。而管理对象的生命周期是其中一个非常重要的功能。在Spring中通过IOC可以轻松实现解耦,而开发人员则可以更专心于业务逻辑的编写。
第一种情况:管理Dao,Service,Manage等bean
配置的方式:(开发中一般以第二种居多)
1:通过xml
- <bean id="messageHelper" class="com.dtsz.framework.core.spring.MessageHelper"/>
2:通过注解和扫描
2.1 指定扫描的范围:
- <!-- 使用annotation 自动注册bean, 并保证@Required、@Autowired的属性被注入 -->
- <context:component-scan
- base-package="com.dtsz">
- <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
- </context:component-scan>
这句话的意思就是,我扫描com.dtsz的包下bean。交给spring容器管理
2.2 通过注解标识bean
- @Service
- @Transactional
- public class UserManager extends BaseService{
- @Resource
- UserDao userDao;
- private static Logger logger = LoggerFactory
- .getLogger(UserManager.class);
- ........
- }
使用的方式:
1:通过@Autowired 或者@Resource
- @Controller
- @RequestMapping("/personInfoController")
- public class UserController {
- private static Logger logger = LoggerFactory
- .getLogger(UserController.class);
- @Resource
- UserManager userManager;
- .....
- }
通过 这种方式,可以将@autowird写到 set方法,也可以直接写到对象声明上。
代码如下:
- private JdbcTemplate jdbcTemplate
- @Resource
- public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
- this.jdbcTemplate = jdbcTemplate;
- }
- ......
2: 通过构造器注入
- <bean name="springAction" class="com.dtsz.action.SpringAction">
- <constructor-arg index="0" ref="userDao"></constructor-arg>
- <constructor-arg index="1" ref="userService"></constructor-arg>
- </bean>
java代码中使用
- public class SpringAction {
- //注入对象springDao
- private UserDao userDao;
- private UserService userService;
- public SpringAction(UserDao userDao,UserService userService){
- this.userDao = userDao;
- this.userService = userService;
- }
- }
第二种情况 :在ApplicationContext环境外获取bean(比如webService,junit测试类)
1:继承 ServletContextListener
- public class SpringContextListener implements ServletContextListener {
- private static Logger logger = LoggerFactory
- .getLogger(SpringContextListener.class);
- private static ApplicationContext springContext;
- public void contextDestroyed(ServletContextEvent event) {
- // 暂时不写;
- }
- public void contextInitialized(ServletContextEvent event) {
- System.out.println("####################初始化容器开始");
- springContext = WebApplicationContextUtils
- .getWebApplicationContext(event.getServletContext());
- if (springContext == null) {
- logger.warn("cannot find applicationContext");
- return;
- }
- System.out.println("####################初始化容器结束");
- }
- public static ApplicationContext getApplicationContext() {
- return springContext;
- }
- public static void setApplicationContext(ApplicationContext cxt) {
- springContext = cxt;
- }
- }
2: applicationContentAware
Spring中获取对象的更多相关文章
- spring中获取dao或对象中方法的实例化对象
spring中获取dao的中方法的实例化对象: //获取应用上下文对象 ApplicationContext ctx = new ClassPathXmlApplicationContext(&quo ...
- Spring中获取被代理的对象
目录 Spring中获取被代理的对象 获取Spring被代理对象什么时候可能会用到? Spring中获取被代理的对象 Spring中获取被代理的对象 ### 获取Spring被代理对象的JAVA工具类 ...
- 5.3:从bean的实例中获取对象
5.3 从bean的实例中获取对象 在getBean方法中,getObjectForBeanInstance是个高频率使用的方法,无论是从缓存中获得bean还是根据不同的scope策略加载bean. ...
- spring中获取当前项目的真实路径
总结: 方法1: WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext ...
- Netty源码分析第8章(高性能工具类FastThreadLocal和Recycler)---->第4节: recycler中获取对象
Netty源码分析第八章: 高性能工具类FastThreadLocal和Recycler 第四节: recycler中获取对象 这一小节剖析如何从对象回收站中获取对象: 我们回顾上一小节demo的ma ...
- asp.net core不通过构造方法从容器中获取对象及解决通过这种方法NLog获取对象失败的问题
一般想从容器中获取对象,我们都是通过构造方法获取对象,但有些条件不允许不能通过构造方法获取对象,我们必须单独从容器中单独创建获取找个对象,这样我们就不行把找个容器静态保存起来供全局diaoy 一. 简 ...
- Spring源码分析(十四)从bean的实例中获取对象
摘要:本文结合<Spring源码深度解析>来分析Spring 5.0.6版本的源代码.若有描述错误之处,欢迎指正. 在getBean方法中,getObjectForBeanlnstance ...
- Spring中获取request的几种方法,及其线程安全性分析
前言 本文将介绍在Spring MVC开发的web系统中,获取request对象的几种方法,并讨论其线程安全性. 原创不易,如果觉得文章对你有帮助,欢迎点赞.评论.文章有疏漏之处,欢迎批评指正. 欢迎 ...
- [No000016E]Spring 中获取 request 的几种方法,及其线程安全性分析
前言 本文将介绍在Spring MVC开发的web系统中,获取request对象的几种方法,并讨论其线程安全性. 原创不易,如果觉得文章对你有帮助,欢迎点赞.评论.文章有疏漏之处,欢迎批评指正. 欢迎 ...
随机推荐
- cocoapods安装和使用常见问题及解决方案
cocopods安装后pod install出现以下错误 /usr/local/Cellar/ruby/2.4.1_1/lib/ruby/2.4.0/rubygems.rb:270:in find_s ...
- javaWeb学习总结(4)- HttpServletResponse
一.简介: Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象. request和response对象即然代表请求和 ...
- 开涛spring3(3.3) - DI 之 3.3 更多DI的知识
3.3.1 延迟初始化Bean 延迟初始化也叫做惰性初始化,指不提前初始化Bean,而是只有在真正使用时才创建及初始化Bean. 配置方式很简单只需在<bean>标签上指定 “lazy- ...
- 纯css实现多标签浮动居中(任意个数)
在做的一个网页上有一块要用浮动标签,具体就是网页底部有未知数量,未知尺寸的元素要水平居中,有点类似于分页器. 首先,我们先新建一个容器con,就是标签的爸爸,用来控制标签在页面的位置,.father{ ...
- VR全景智慧城市——商家的需求才是全景市场的核心竞争力
消费者视角痛点:比如酒店消费行业,很多消费者在预订酒店过程中,都遇到过这样的场景:网上照片里酒店房间看着宽敞明亮,格调不凡,感觉非常喜欢,等真正推开房门插上房卡一看,却大失所望.在酒店行业,网上照片和 ...
- Navicat for mysql 11.1.20激活
由于最近工作太忙,一直没有机会分享自己在工作中遇到的困难,今天周日,在出去之前先分享下navicat(版本很重要navicat_trial_11.1.20.0.1449226634)激活. 刚开始我是 ...
- nodeJS实现简单网页爬虫功能
前面的话 本文将使用nodeJS实现一个简单的网页爬虫功能 网页源码 使用http.get()方法获取网页源码,以hao123网站的头条页面为例 http://tuijian.hao123.com/h ...
- vue2入坑随记(二) -- 自定义动态组件
学习了Vue全家桶和一些UI基本够用了,但是用元素的方式使用组件还是不够灵活,比如我们需要通过js代码直接调用组件,而不是每次在页面上通过属性去控制组件的表现.下面讲一下如何定义动态组件. Vue.e ...
- JavaMail API
JavaMail API的核心类:会话.消息.地址.验证程序.传输,存储和文件夹.所有这些类都可以在JavaMail API即javax.mail的顶层包中找到,尽管你将频繁地发现你自己使用的子类是在 ...
- Oracle ORA-39726压缩表删除字段处理方法
今天在往一个压缩表增加一个字段可以增加成功,但在删除的时候报了个ORA-39726 unsupported add/drop column operation on compressed tables ...