欢迎来到我的个人网站。交流请加我好友: 919201148。欢迎关注公众号或视频号:蜗牛互联网
Solo  当前访客:2 开始使用

白色蜗牛的互联网心得

我要一步一步往上爬,在最高点乘着叶片往前飞

存档: 2016 年 06 月 (17)

使用Spring配置文件实现事务管理

2016-06-11 19:20:12 huayonglun
0  评论    207  浏览

PersonServiceBean package com.liuyong666.service.impl; import java.util.List; import javax.sql.DataSource; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import com.liuyong666.bean.Person; import com.liuyong666.service.PersonService; public class PersonServiceBean implements PersonService { private JdbcTemplate jdbcTemplate; public void setDataSource(DataSource data....

, ,

使用@Autowire注解与自动装配

2016-06-01 19:20:12 huayonglun
0  评论    207  浏览

@Autowired注解 Autowire 默认是按类型匹配 @ Autowire 如果你要修改 Autowire,按名称匹配可以 @Autowired @Qualifier(“MypersonDao”) ,如果在beans.xml中没有发现有这个名字的bean,则会有异常 @Autowired(required=true) @Qualifier(“MypersonDao”), 表示这个bean必须注入值,不然报错 用于字段上 @Autowired private PersonDao personDao; 用于属性的setter方法上 @Autowired public void setPersonDao(PersonDao personDao) { this.personDao = personDao; } 扩展 @Autowired注解是按类型装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它的required属性为false,如果我们向使用按名称装配,可以结合@Qualifier注解一起使用。如下: @Autowired @Qualifier....

, , ,

使用Spring的注解方式实现AOP入门

2016-06-05 19:20:12 huayonglun
0  评论    217  浏览

配置文件 使用Spring进行面向切面(AOP)编程 要进行AOP编程,首先我们要在Spring的配置文件中引入aop命名空间: <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" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.....

, , ,

用@Resource注解完成属性装配

2016-06-01 18:20:12 huayonglun
0  评论    215  浏览

bean的注入方式有3种: 第一种:使用构造器注入 第二钟:使用属性setter方法注入 第三种:使用Field注入(用于注解方式) 使用注解的方式完成bean的注入 在java代码中使用@Autowired或@Resource注解方式进行装配,这两个注解的区别是: @Autowired 默认按类型装配。是spring的api。 @Resource默认按名称装配,当找不到与名称匹配的bean才会按类型装配。但一旦指定了name属性,就只能按名称装配了。是jdk的api。使用它可以不依赖spring的特性。 @Resource 1.修改beans.xml <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.sp....

, , ,

让Spring自动扫描和管理Bean

2016-06-02 19:20:12 huayonglun
0  评论    215  浏览

为什么需要自动扫描 通过在classpath自动扫描方式把组件纳入spring容器中管理 之前我们都是使用XML的bean定义来配置组件。在一个稍大的项目中,通常会有上百个组件,如果这些组件采用xml的bean定义来配置,显然会增加配置文件的体积,查找以及维护起来也不太方便。 如何实现自动扫描 Spring2.5为我们引入了组件自动扫描机制,他可以在类路径底下寻找标注了@Component,@Service,@Controller,@Repository注解的类,并把这些类纳入进spring容器中管理。 它的作用和在xml文件中使用bean节点配置组件时一样的。要使用自动扫描机制,我们需要打开以下配置信息 <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:schemaLo....

, , ,

搭建和配置Spring与jdbc整合的环境

2016-06-09 19:20:12 huayonglun
0  评论    220  浏览

配置数据源 <!-- 配置结点,可以使用占位符 --> <context:property-placeholder location="classpath:jdbc.properties"/> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${driverClassName}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> <!-- 连接池启动时的初始值 --> <property name="initialSize" value="${ini....

, ,

使用Spring配置文件实现AOP

2016-06-07 19:20:12 huayonglun
0  评论    212  浏览

现在学习一下使用XML方式怎样来开发AOP应用。 如果使用XML方式开发AOP应用的话,我们就不再需要提供注解的配置,我们只需要一个普通的Java类对象 MyInterceptor package com.liuyong666.service; import org.aspectj.lang.ProceedingJoinPoint; /** * 切面 * */ public class MyInterceptor { public void doAccessCheck() { System.out.println("前置通知"); } public void doAfterReturning() { System.out.println("后置通知"); } public void doAfter() { System.out.println("最终通知"); } public void doAfterThrowing() { System.out.println("例外通知"); } public Object doBasicProfiling(ProceedingJoinPoin....

, ,

使用Spring注解方式管理事务与传播行为详解

2016-06-10 19:20:12 huayonglun
0  评论    210  浏览

遇到异常事务是否会回滚 Spring容器如果碰到运行期异常(uncheck exception),也就是 RuntimeException 会回滚. public void delete(Integer id) { jdbcTemplate.update("delete from person where id=?", new Object[]{id}, new int[]{java.sql.Types.INTEGER}); throw new RuntimeException("运行期例外"); } @Test public void testDelete(){ ps.delete(1); } 如果是用户定义的例外则不会回滚(check exception),这个特性是默认的: @Override public void delete(Integer id) throws Exception { jdbcTemplate.update("delete from person where id=?", new Object[]{id}, new int[]{java.sql.....

, , ,

使用CGLIB实现AOP功能与AOP概念解释

2016-06-04 19:20:12 huayonglun
0  评论    219  浏览

使用场景 通过JDK中的Proxy技术实现AOP功能,目标对象是实现了接口的,用JDK的Proxy技术可以使其生成代理对象,但有些情况下,目标对象是没有实现接口的,那么我们就要通过另外的方法来实现了。 首先需要导入cglib-nodep-x.x_x.jar这个包。 步骤 分三步: 创建Enhancer 设置目标对象为超类 创建对象 这样就产生了一个目标对象的子类 PersonServiceBean package com.liuyong666.service.impl; import com.liuyong666.service.PersonService; /** * 业务需求: * 1. 拦截所有业务方法 * 2. 判断用户是否有权限 * 如果用户为null,没有权限调用业务方法 * 如果用户不为null,则有权限调用 * @author Administrator * */ public class PersonServiceBean (这里不必实现接口){ private String user = null; public String getUser()....

, , ,

aspectj的切入点语法定义细节

2016-06-08 19:20:12 huayonglun
0  评论    215  浏览

表达式分析 expression=“execution(* com.liuyong666.service.impl.PersonServiceBean.(..))” 第一个星号表示 拦截方法的返回值 为任意 如果为 java.lang.String ,表示只拦截 返回值为String 的方法 如果为 void ,则表示只拦截 返回值为 void 的方法 如果为 !void ,则表示只拦截 返回值为 非void的方法 如果我们只拦截方法第一个参数为String,剩下的参数类型任意,则可以   expression=“execution(java.lang.String com.liuyong666.service.impl.PersonServiceBean.(java.lang.String,..))” 欢迎关注微信公众号,技术,思维,心理,带给你认知的全方位成长。 你的关注,就是对我最大的肯定,我会努力产出的,我们一起成长~ 本文由 永伦的小屋 原创。 转载请注明作者及出处,本文作者为 永伦的小屋。

, ,

使用Spring的注解方式实现AOP的细节

2016-06-06 19:20:12 huayonglun
0  评论    215  浏览

beans.xml配置 <aop:aspectj-autoproxy/> <bean id="myInterceptor" class="com.liuyong666.service.MyInterceptor"/> <bean id="personService" class="com.liuyong666.service.impl.PersonServiceBean"/> PersonService package com.liuyong666.service; public interface PersonService { public void save(String name); public void update(String name, Integer personid); public String getPersonName(Integer personid); } PersonServiceBean package com.liuyong666.service.impl; import com.liuyong666.ser....

, , ,

使用JDK中的Proxy技术实现AOP功能

2016-06-03 19:20:12 huayonglun
0  评论    232  浏览

PersonService接口 package com.liuyong666.service; public interface PersonService { public void save(String name); public void update(String name, Integer personid); public String getPersonName(Integer personid); } 实现类PersonServiceBean package com.liuyong666.service.impl; import com.liuyong666.service.PersonService; /** * 业务需求: * 1. 拦截所有业务方法 * 2. 判断用户是否有权限 * 如果用户为null,没有权限调用业务方法 * 如果用户不为null,则有权限调用 * @author Administrator * */ public class PersonServiceBean implements PersonService { private Strin....

, , ,

使用构造器装配属性

2016-06-01 17:00:12 huayonglun
0  评论    212  浏览

以前我们都是使用setter方法给属性注入值的,现在我们来看看另外一种注入方法:构造器注入 步骤 1.改写PersonServiceBean,为注入的属性加上构造方法 public PersonServiceBean(PersonDao personDao, String name) { this.personDao = personDao; this.name = name; } 2.配置beans.xml,其中配置了一个依赖属性和一个基本的String类型 <!-- 使用构造器装配属性 --> <bean id="personDao" class="com.liuyong666.dao.impl.PersonDaoBean"></bean> <bean id="personService" class="com.liuyong666.service.impl.PersonServiceBean"> <constructor-arg index="0" ref="personDao" type="com.liuyong666.....

, , ,

struts2中访问或添加request等属性

2016-06-11 02:50:27 huayonglun
0  评论    213  浏览

访问或添加request/session/application属性 在struts2中获得request,session,application有3种方法 通过ServletActionContext类直接获取:此法比较常用 实现指定接口,有struts框架运行时注入:实现的接口是ServletRequestAware,ServletResponseAware,ServletContextAware,此方法不常用。 通过ActionContext类直接获取。此法较常用 方法一,通过ServletActionContext类直接获取: public class TestAction { public String rsa(){ HttpServletRequest request = ServletActionContext.getRequest(); ServletContext servletContext = ServletActionContext.getServletContext(); request.setAttribute("req", "请求范围属性"); ....

,

struts2中自定义拦截器

2016-06-14 02:50:27 huayonglun
0  评论    211  浏览

自定义拦截器 自定义拦截器需要实现com.opensymphony.xwork2.interceptor.Interceptor接口 PermissionInterceptor package com.liuyong666.interceptor; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.Interceptor; public class PermissionInterceptor implements Interceptor { public void destroy() { } public void init() { } public String intercept(ActionInvocation invocation) throws Exception { Object user = ActionContext.getContext().....

,

struts2中多文件上传

2016-06-13 02:50:27 huayonglun
0  评论    209  浏览

多文件上传 导包   在WEB-INF/lib下加入commons-fileupload-1.2.1.jar、commns-io-1.32.2.jar 表单设置 <form action="${pageContext.request.contextPath}/control/employee/list_execute.action" enctype="multipart/form-data" method="post"> 文件1:<input type="file" name="image"><br/> 文件2:<input type="file" name="image"><br/> 文件3:<input type="file" name="image"><br/> <input type="submit" value="上传"/> </form> Action类 public class HelloWorldAction { private File[] image; //....

,

struts2中文件上传

2016-06-12 02:50:27 huayonglun
0  评论    222  浏览

文件上传 步骤 在WEB-INF/lib下加入conmmons-fileupload-1.2.1.jar、commons-io.1.3.2.jar。如果使用的struts.jar文件时2.1以上的这一步可以省略。但是如果想使用FileUtils类,还需要添加commons-io.1.3.2.jar包 把form表的enctype设置为:“multipart/form-data",如下: <form action="${pageContext.request.contextPath}/hello/test/user_upload.action" enctype="multipart/form-data" method="post"> 文件:<input type="file" name="uploadImage"/> <input type="submit" value="上传"/> </form> “在Action类中添加如下属性:” public class FileUploadAction { private File upl....

,
TOP