工厂方法创建bean 工厂方法为Spring提供了创建bean的另外一种方式,属于工厂设计模式,为bean的创建提供了更大的灵活性,屏蔽了复杂对象的创建过程。 静态工厂方法 用法: <bean id="user" class="com.bailiban.day2.factory.staticfactory.StaticFactory" factory-method="getUser" />
一、xml配置版 1.导入依赖 <!--MyBatis和Spring的整合包 由MyBatis提供--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.0</version> </dependency> <!--MyBatis的核
Mybatis实现简单的数据库增删改查操作 框架:mybatis(3.5.2) 数据库:mysql 工具:idea 1、新建一个maven项目,在pom文件中添加mybatis依赖及MySQL依赖 <!-- mybatis核心依赖 --> <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <grou
关于spring bean作用域,基于不同的容器,会有所不同,如BeanFactory和ApplicationContext容器就有所不同,在本篇文章,主要讲解基于ApplicationContext容器的bean作用域。关于bean的作用域,在spring中,主要包括singleton,prototype,session,request,global,本篇文章主要讲解常用的两种,即:sing
java public class UserServiceImp implements UserService{ private UserDao userDao =null; public void setUserDao(UserDao userDao) { this.userDao = userDao; } @Override public void getUser() { // TODO Auto-generated m
原文链接:https://blog.csdn.net/jiguquan3839/article/details/89416203 Spring的自动装配 好处:大幅度减少Spring配置 坏处:依赖不能明确管理,可能会有多个bean同时符合注入规则,没有清晰的依赖关系。 在装配的时候会有两种方式,byName和byType两
前面几节,通过配置xml文件,可以实现Spring 控制反转的依赖注入。不过,如果一个类中,存在很多属性、依赖不止一个目标,此时这种基于xml配置的方式就显得非常繁琐。幸好,Spirng提供了几种技巧,可以帮助我们减少xml的配置数量 自动装配(autowiring)有助于减少甚至消除配置<property>元素
Dao层: 1 public interface IUserDao { 2 3 /** 4 * 查询所有结果 5 * @return 6 */ 7 @Select("select * from user") 8 List<User> findAll(); 9 10 /**11 * 保存用户12 * @param user13 */14 @Insert("ins
比较常见的一个问题 数据库重复查询 用User不能重复账号举例 注:使用mybatis和mysql 常规操作 需要先在数据库判断是否已有重复数据 public void saveUser(User user) throws ServiceException { try { //需要先对数据库查询一次 long sameCount = userDa
废话少说,直接上代码,因为这是面试常考的点,所以放到博客这边利于查看,同时这也是很久以前学习过的知识点,借此机会重温一遍。 一,首先定义接口和具体的实现类: //接口 public interface UserDao { public void save(); public void update(); public void delete();
Mybatis框架之—— 基于代理 Dao 实现 CRUD 操作 使用要求: 1、持久层接口和持久层接口的映射配置必须在相同的包下 2、持久层映射配置中 mapper 标签的 namespace 属性取值必须是持久层接口的全限定类名 3、SQL 语句的配置标签<select>,<insert>,<update>,<delete>
Spring boot 日志 private Logger logger = LoggerFactory.getLogger(UserDao.class); logger.debug("UserDao logger debug"); logger.info("UserDao logger info"); logger.warn("UserDao logger warn"); logger.error("U
1.写上注解 1 @Autowired 2.声明一个变量 1 private UserDao userDao; 3.注意!Spring里面数据库对象操作类不需要实例化就能调用
1、项目目录 可以查看上一篇文章,这里不同的就是IUserDao.xml里面配置的sql语句的信息不同和测试的方法不同。 2、IUserDao.xml配置文件如下: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http:
public class IUserDaoTest { public static void main(String[] args) throws IOException { //1.读取配置文件 InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml"); //2. 创建SqlSessionFactory工厂 SqlSessionFactoryBui
JDK可以对实现接口的类进行代理增强 比如我们写一个实现了UserDao的类UserDaoImpl,接口中有增删改查方法,我们需要增强修改方法,在修改方法执行前校验用户是不是管理员此时就可以用到动态代理了 代理类的写法如下: package com.test.prxoy; import java.lang.reflect.InvocationHandler
背景: 这几天,由于项目集成的需要,我要在doFilter里调用dao层里的某些方法,可是总之报空指针,只要调用那个dao方法,就报错误。很是纳闷,网上查找了各种原因,终于让我给突破了,看来还是Java基础掌握的不够呀! 代码: 在servlet中加入私有变量UserDao,然后在servlet的init()方法中初始化一下即可用
Spring事务 1)定义 事务是指多个操作单元组成的集合,多个操作单元是整体不可分割的,要么都成功,要么都不成功。必须遵守四个原则(ACID) ●原子性(Atomicity):即事务是不可分割的最小工作单元,事务内的操作要么全做,要么全不做; ●一致性(Consistency):在事务执行前数
注解方式 如下: 开启组件扫描--》 结果同上。 如果设置值: 新建service 注入dao 进行测试 注入Dao。 但要注意 autowired是按照类型注入的 不管dao的名字是啥 哪怕是userDao22222 只要它实现了userDao接口 那么就可以直接注入userDao。 要想按名
@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface Select { public String value();} public interface UserDao { @Select("select * from t_user where tid = #{i}") public List<Map> query(int i);}
jdk动态代理就是采用反射技术实现的 jdk动态代理前提条件是:被代理对象必须实现一个或者多个接口 jdk动态代理需要实现InvocationHandler接口和invoke()方法 例如: 接口userDao public interface userDao { public void addUser(); public void deleteUser();}接口实现类UserDaoI
此问题解决参考: 1.检查xml文件所在package名称是否和Mapper interface所在的包名 <mapper namespace="me.tspace.pm.dao.UserDao"> mapper的namespace写的不对!!!注意系修改。 2.UserDao的方法在UserDao.xml中没有,然后执行UserDao的方法会报此 3. UserDao的方法返回值是List<
1.JDK动态代理 UserDao类: public interface UserDao { public void addUser();} UserDaoImpl类: public class UserDaoImpl implements UserDao { @Override public void addUser() { System.out.println("添加用户"); }} MyAspect切面: public class
这段时间在学习Spring,依赖注入DI和面向切面编程AOP是Spring框架最核心的部分。这次主要是总结依赖注入的bean的装配方式。 什么是依赖注入呢?也可以称为控制反转,简单的来说,一般完成稍微复杂的业务逻辑,可能需要多个类,会出现有些类要引用其他类的实例,也可以称为依赖其他类。传统的方法
@Configuration是spring.xml的注解版。 @ComponentScan是<context:component-scan base-package="com.coshaho.*" />标签的注解版。 @ImportResource @Import是<import resource>标签的注解版。 @PropertySource是<context:property-placeholder location="classpath:j