版权声明:本文为博主武伟峰原创文章,转载请注明地址http://blog.csdn.net/tianyaleixiaowu. 在spring管理的web项目里,譬如Struts和spring的项目,配置好后,Struts里就可以直接使用定义好的service.但是如果要在普通的工具类里,使用service或dao,就会报空指针,因为这个普通的Java类并不在spring管理下,不能使用spring注入的service. 下面讲一个方法,让普通工具类也能使用service. 定义一个类 Sprin…
public class Demo{ static{ // 模拟会抛异常的代码 throw new RuntimeException(); } } 如果你在Java类的static块里写这样会抛异常的代码, 你,会后悔的! 因为JVM启动时,会加载需要的类,如果加载到这样的类,执行 static块时抛异常,ClassLoader就会卡在这里, 而且!没有任何输出,JVM就卡住了,如果这样的类多了,完全不知道去哪里找问题!! 于是在static里写代码最好加个try-catch!!!切记!…
一.Spring简介 1.Spring简化Java开发 Spring Framework是一个应用框架,框架一般是半成品,我们在框架的基础上可以不用每个项目自己实现架构.基础设施和常用功能性组件,而是可以专注业务逻辑.因此学习Spring Framework在架构和模式方面的结构和原理,对我们在架构和模块级别的理解帮助极大.Spring Framework(参考1)的宗旨是简化Java开发,主要的手段如下: (1)在架构上解耦:通过DI(依赖注入)管理类型依赖,通过AOP分离关注点,减少重复代码…
//从spring容易中获取bean public static Object getBean(String beanName){ ApplicationContext context = ContextLoader.getCurrentWebApplicationContext(); return context.getBean(beanName); } //获取ServletContext public static ServletContext getServletContext(){ W…
xml的配置文件 <bean id="fftController" class="com.bill99.query.controller.FftController" abstract="true"><property name="wxOrderService" ref="wxOrderService" /> </bean> <bean id="wxFFa…
[原文]https://www.toutiao.com/i6594205115605844493/ Spring学习Bean配置的三种方式(XML.注解.Java类)介绍与对比 本文将详细介绍Spring Bean配置的三种不同方式的特点与使用条件. 主要包括: 基于XML的配置方式 基于注解的配置方式 基于Java类的配置方式 一.基于XML的配置 请看Spring学习(十二)Spring 的配置文件概述 二.基于注解的配置 Spring2.0开始引入基于注解的配置方式,即Bean的定义信息可…
1. PropertyPlaceholderConfigurer是个bean工厂后置处理器的实现,也就是 BeanFactoryPostProcessor接口的一个实现.PropertyPlaceholderConfigurer可以将上下文(配置文 件)中的属性值放在另一个单独的标准java Properties文件中去.在XML文件中用${key}替换指定的properties文件中的值.这样的话,只需要对properties文件进 行修改,而不用对xml配置文件进行修改. 2.在Spring…
一.简介 我们在用MyBatis里,很多时间有这样一个需求:bean里有个属性是非基本数据类型,在DB存储时我们想存的是json格式的字符串,从DB拿出来时想直接映射成目标类型,也即json格式的字符串字段与Java类的相互类型转换. 当然,你可以为每个类写一个MyClassTypeHandler,但问题是要为每个类都写一个TypeHandler,过于繁琐. 有了泛型,一个通用的TypeHandler直接搞定. 二.源码 详见:spring-mybatis-test package com.ad…
假如java类里的成员变量是自身的对象,则新建该类对象时内存中怎么分配空间,我感觉似乎死循环了. 不过我想的肯定是错的,因为很多类的成员变量是自身对象,并且绝对无错,举个例子: Class A{ private String b ="Hello"; private A a = new A(); } Class B{ public static void main(){ A p = new A(); } } 1.程序运行的时候会产生一个栈溢出错误的异常 Exception in thre…
今晚看单例模式饿汉时想到一个问题:假如java类里的成员变量是自身的对象,则新建该类对象时内存中怎么分配空间,我感觉似乎死循环了.于是上网搜索了下,哈哈,果然有人早就思考过这个问题了,站在巨人的肩膀上哈直接. 举个例子: class B { private String b = "Hello"; private B a = new B(); } public class Test { public static void main(String[] args) { B p = new…
方法一:在初始化时保存ApplicationContext对象方法二:通过Spring提供的工具类获取ApplicationContext对象方法三:继承自抽象类ApplicationObjectSupport方法四:继承自抽象类WebApplicationObjectSupport方法五:实现接口ApplicationContextAware 常用的5种获取spring 中bean的方式总结: 方法一:在初始化时保存ApplicationContext对象 ApplicationContext…
Spring使用注解开发 说明 在spring4之后,想要使用注解形式,必须得要引入aop的包 在配置文件当中,还得要引入一个context约束 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSch…
有的人说事物在spring里设置有两种,其实事物设置在spring配置文件中共有五种方式:第一种方式:每个Bean都有一个代理第二种方式:所有Bean共享一个代理基类第三种方式:使用拦截器第四种方式:使用tx标签配置的拦截器第五种方式:在service层的方法上面用@Transactional()注解进行事物的设置 常用的两种: 声明式事物和编程式事物 1.声明式 这种方法不需要对原有的业务做任何修改,通过在XML文件中定义需要拦截方法的匹配即可完成配置,要求是,业务处理中的方法的命名要有规律,…
应用启动的时候失败,看了下异常,是这个---NoUniqueBeanDefinitionException. 大家都知道,这是因为有俩个类型相同的实例,在被注入的时候,spring不知道该用哪个. 但是,我们都知道,一个向spring注册的bean,他的名字默认是这个类的shortclassname,然后对第一个字母小写.在使用的时候,使用@Resource注解,会先用这个字段的命名作为bean的name去spring里找.看了下,代码里完全遵守了这个规则,但是还是报错,所以到spring内部一…
spring里面的ioc就是控制反转,其实现核心是DI(依赖注入),控制反转不向以前java代码里面,通过new关键字来实现创建对象,这样每段代码之间的耦合度就比较高,为了降低每个小模块之间的耦合度,就用了控制反转:1.降低了每个小模块之间的耦合度:2.不在向以前那样,依赖new关键字来实现创建对象,而是通过spring容器来实现创建对象(由第三方进行创建对象):3.在一定程度上,实现不在依赖对象,通过代理实现创建对象:4.管理对象与对象之间的关系,实现动态注入…
原文:http://jinnianshilongnian.iteye.com/blog/1762632 component-scan的作用的自动扫描,把扫描到加了注解Java文件都注册成bean <context:component-scan base-package="com.target"> </context:component-scan> 今天在看一个代码项目时,看到有人使用了类似如下配置.看字面意思是要把@Service的注解包括进来,把@Contro…
不知道大家每次使用Spring boot的时候有没有看过它启动类里 @SpringBootApplication这个注解呢?众所周知,这个注解是一个复合注解,但是注解是不能继承元注解的属性的,也就是说,我在类扫描的时候,拿到的注解的属性值,依然是元注解的属性值,而不是你定义的注解的属性值 那么它是怎么做到使用别的注解的属性的呢?玄机就在这个 @AliasFor注解上,它可以指定某个元注解里的属性,并将其重新命名.这样我们可以自由的将Spring里各个注解再进行一遍封装,下面给大家看个Demo,…
Spring里的坑 1. 配置文件配置controller,在Controller中使用注解配置的bean,会出现获取不到bean的情况 步骤一:使用在配置文件 springmvc.xml 中配置的方式配置controller <bean name="login.action" class="com.orderonline.controller.admin.LoginController"></bean> 步骤二:在controller中获取…
DispatcherServlet是Spring MVC的核心,按照传统方式, 需要把它配置到web.xml中. 我个人比较不喜欢XML配置方式, XML看起来太累, 冗长繁琐. 还好借助于Servlet 3规范和Spring 3.1的功能增强, 可以采用一种全新的,更简洁的方式配置Spring MVC了. 下面按这种方式一个Hello World的MVC配置. Step 1:先用eclipse创建一个Maven的WEB工程. pom.xml文件如下: <project xmlns="ht…
spring注解方式在一个普通的java类里面注入dao @Repositorypublic class BaseDaoImpl implements BaseDao {这是我的dao如果在service层注入的话很简单public class BaseServiceImpl implements BaseService {@Autowiredpublic BaseDao baseDao; 这样就可以了现在我想在一个普通的java类中注入进来改怎么写比如我的普通java类是 package co…
普通的POJO只要标注@Configuration注解,就可以为Spring容器提供Bean定义的信息了,每个标注了@Bean的类方法都相当于提供一个Bean的定义信息. 基于Java类的配置方法和基于XML或基于注解的配置方式相比,前者通过代码的方式更加灵活地实现Bean的实例化及Bean之间的装配,但后面两者都是通过配置声明的方式,在灵活性上要稍逊一些,但是配置上要更简单一些.   UserDao类: package com.ioc.cha4_11; public class UserDao…
背景项目中用到多线程,对线程的执行顺序有要求: A.一个线程先收数据 B.一个线程处理数据 C.一个线程再将处理后的数据发送出去 要求三个线程按照ABC的顺序循环执行. 思路子类化多线程方法 重写子类的run函数,在run函数内用while(1)来常驻线程,循环体内通过检查全局变量来判断是否到自己执行,不是自己线程则跳过,是自己线程执行完后改变全局标志位.通过全局标志位来控制线程的执行顺序.所以需要一个全局变量来标记当前应当执行的线程,同时用一个互斥量来保护该全局变量.movetoThread多…
spring注解的作用: 1.spring作用在类上的注解有@Component.@Responsity.@Service以及@Controller:而@Autowired和@Resource是用来修饰字段.构造函数或者设置方法,并做注入的. 2.当注解作用在类上时,表明这些类是交给spring容器进行管理的,而当使用@Autowired和@Resource时,表明我需要某个属性.方法或字段,但是并不需要我自己去new一个,只需要使用注解, spring容器会自动的将我需要的属性.方法或对象创造…
普通Java类获取Spring的Bean的方法 在SSH集成的前提下.某些情况我们需要在Action以外的类中来获得Spring所管理的Service对象. 之前我在网上找了好几好久都没有找到合适的方法.例如: ApplicationContext context = new ClassPathXmlApplicationContext(); 当时我觉得没有这个必要,浪费内存.后来我终于想出了一个解决方法.在此拿来给大家参考下,希望对大家有帮助. 1.创建一个类并让其实现org.springfr…
Spring里的Ant Pattern用于匹配URL 可以参考官网:https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/util/AntPathMatcher.html 规则很简单 ? 匹配单个字符 * 匹配0个或者多个字符 ** 匹配0个或多个路径(也就是用/分割的多级路径) {spring:[a-z]+} 按照正则匹配[a-z]+,并且将其作为路径变量,变量名为"spring" 举例…
与C 和C++ 一样,Objective-C 也使用"头文件"(header file) 与"实现文件"(implementation file)来区隔代码.用Objective-C 语言编写"类"(class)的标准方式为:以类名做文件名称,分别创建两个文件,头文件后缀用.h,实现文件后缀用.m. 创建好一个类之后,其代码看上去例如以下所看到的: // EOCPerson.h #import <Foundation/Foundation.…
Java操作数据库——在JDBC里使用事务 摘要:本文主要学习了如何在JDBC里使用事务. 使用Connection的事务控制方法 当JDBC程序向数据库获得一个Connection对象时,默认情况下这个Connection对象会自动向数据库提交发送的SQL语句.若想关闭这种默认提交方式,让多条SQL在一个事务中执行,可使用JDBC提供的事务控制方法. 常用方法 查询自动提交的状态:boolean getAutoCommit() throws SQLException; 设置自动提交的状态:vo…
很多时候,我们在普通的java类中需要获取spring的bean来做操作,比如,在线程中,我们需要操作数据库,直接通过spring的bean中构建的service就可以完成.无需自己写链接..有时候有些好的东西,拿到用就好了. 这里是多种方式中的一种. 通过实现ApplicationContextAware获取bean.这里有个问题,就是,如果spring容器没有启动完成的时候,不能通过这个方法获取,因为这样,会报空指针,因为 private static ApplicationContext…
在SSH集成的前提下.某些情况我们需要在Action以外的类中来获得Spring所管理的Service对象. 之前我在网上找了好几好久都没有找到合适的方法.例如: ApplicationContext context = new ClassPathXmlApplicationContext(); 当时我觉得没有这个必要,浪费内存.后来我终于想出了一个解决方法.在此拿来给大家参考下,希望对大家有帮助. 1.创建一个类并让其实现org.springframework.context.Applicat…
Eclipse或MyEclipse没有在java类文件上显示接口图标的问题解决办法: 前: 后:…