展开

关键词

Spring IOC和DI原理讲解并制作LazyCoder版的Spring (一)

准备一些业务类,我们准备一个BaseDao接口,就两个方法,add和update,它有两个实现类,分别为HibernateDaoImpl和JdbcDaoImpl,再准备一个BaseService接口,也有两个方法 ,add和update,它有一个实现类BaseServiceImpl,在BaseServiceImpl里,我们建立两个BaseDao接口,准备分别注入HibernateDaoImpl和JdbcDaoImpl package com.lazycoder.dao; public interface BaseDao { public void add(); public void update();}package 注入的时候是根据set方法来注入的,不是根据成员变量,也就是说我们把 public BaseDao hibernateDao;改成public BaseDao abcDao;程序依然可以运行,但是如果把 public void setHibernateDao(BaseDao hibernateDao)改成public void setAbcDao(BaseDao hibernateDao),运行就会报错了

13420

JAVA的泛型与反射的联合应用

通过泛型与反射的结合,可以编写框架来使开发更容易,这里演示的是BaseDao部分的简单使用。 BaseDao部分代码:public abstract class BaseDao{ private Class clazz;具体的实体类 public BaseDao(){ 必须知道具体操作的哪个类, 给clazz赋值 Type type = this.getClass().getGenericSuperclass();得到当前对象的带有泛型信息的父类型 如:BaseDao Parameterized

11810
  • 广告
    关闭

    50+款云产品免费体验

    提供包括云服务器,云数据库在内的50+款云计算产品。打造一站式的云产品试用服务,助力开发者和企业零门槛上云。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Spring注解@Scope(prototype)

    required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下: @Autowired() @Qualifier(baseDao )     private BaseDao baseDao;     3、@Resource(这个注解属于J2EE的),默认安照名称进行装配,名称可以通过name属性进行指定,  如果没有指定name属性 Java代码 @Resource(name=baseDao)     private BaseDao baseDao;     我喜欢用 @Resource注解在字段上,且这个注解是属于J2EE的,减少了与

    33760

    记录一次spring boot和dubbo整合使用的走的坑

    required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下: @Autowired() @Qualifier(baseDao )     private BaseDao baseDao; @Resource(这个注解属于J2EE的),默认安照名称进行装配,名称可以通过name属性进行指定, 如果没有指定name属性,当注解写在字段上时 @Resource(name=baseDao)     private BaseDao baseDao;   喜欢用 @Resource注解在字段上,且这个注解是属于J2EE的,减少了与spring的耦合

    1K20

    spring扩展点BeanPostProcessor

    理论上,BaseDao层已经帮每个子类实现了大部分功能,子类只需要实现个性化逻辑,那么BaseDao就需要持有一个jdbcTemplate实例,这个jdbcTemplate实例要么是子类以方法调用的形式传进来 ,要么是BaseDao层持有,在容器启动的时候进行初始化。 根据个人的使用经验来说,肯定是在容器启动的时候初始化,这样可以省去每次调用的时候重复性传参,并且非业务参数,接下来我们就使用代码实现:BaseDaopublic class BaseDao { protected ) { ((BaseDao)bean).setJdbcTemplate(jdbcTemplate); System.out.println(beanName + 完成设置jdbcTemplate); } 可以看到,在spring容器启动过程中给所有BaseDao的子类实例都填充了jdbcTemplate属性。

    12020

    系统学习javaweb-09-javaweb基础增强

    名称:javaweb基础增强 内容:反射泛型、注解、日志以及利用反射泛型和注解开发自定义框架(模拟Struts)代码结构【package1】:com.csxiaoyao.study 使用注解对知识点1的BaseDao 获取参数化类型中实际类型的定义(class) public BaseDao(){ this 表示当前运行类 (AccountDaoAdminDao) this.getClass() 当前运行类的字节码 (AccountDao.classAdminDao.class) this.getClass().getGenericSuperclass(); 当前运行类的父类,即为BaseDao 其实就是“参数化类型 表名【表名与对象名称一样, 且主键都为id】 * * 即, * ---》得到当前运行类继承的父类 BaseDao * ----》 得到Account.class * String sql = select 代码当表名与数据库名称不一致,字段与属性不一样,主键不叫id,上面的BaseDao失效,具体写法见代码3 log4j# 通过根元素指定日志输出的级别、目的地: # 日志输出优先级: debug < info

    16130

    手把手教你学 JDBC —— 结构分离

    JDBC 学习笔记 —— 结构分离前期准备一、实现你的第二个 JDBC 程序1.1 项目基本结构1.2 BaseDao 结构分离1.2.1 创建 jdbc.properties 文件1.2.2 创建 ConfigProperty.java dao 包下创建 UserDao 类,实现最基本的增删改查的方法entity 包下创建 User 类,增加基本的 User 的基本信息 以及 getter 和 setter 方法util 包下,使用 BaseDao 类对 JDBC 进行封装工作1.2 BaseDao 结构分离1.2.1 创建 jdbc.properties 文件在 util 包中,我们将 BaseDao 中注册驱动的部分再细分下去,把注册驱动的四要素文件专门存放在 代码基本可以不用改变然后加入相对应的数据库驱动即可1.3 Dao 层分离将 UserDao 分离成如下两个部分UserDao 类转换成 UserDaoT 类新增一个 UserDao 接口新增一个 UserDaoImpl 类,继承 BaseDao cn.jdbc.dao.UserDao;import cn.jdbc.entity.User;import cn.jdbc.util.BaseDao; public class UserDaoImpl extends BaseDao

    100

    华为技术专家告诉你@Autowired、@Inject、@Resource到底什么区别?

    @Autowired(required=false) 若想使用名称装配,需要配合@Qualifier一起食用,如下:@Autowired() @Qualifier(baseDao) private BaseDao baseDao;@Resource默认按名称装配(JDK1.6开始支持的注解)。 @Resource作用于字段@Resource(name=base) private BaseDao baseDao; Spring注入p的过程:查找xml中是否有id为baseDao的元素如果没有找到 ,则看是否有name属性(@Resource name=“base”),有则查找name否则查找BaseDao类型的元素 byName 通过参数名自动装配,如果一个bean的name 和另外一个bean

    3810

    华为技术专家告诉你@Autowired、@Inject、@Resource到底什么区别?

    @Autowired(required=false) 若想使用名称装配,需要配合@Qualifier一起食用,如下:@Autowired() @Qualifier(baseDao) private BaseDao baseDao;@Resource默认按名称装配(JDK1.6开始支持的注解)。 @Resource作用于字段@Resource(name=base) private BaseDao baseDao; Spring注入p的过程:查找xml中是否有id为baseDao的元素如果没有找到 ,则看是否有name属性(@Resource name=“base”),有则查找name否则查找BaseDao类型的元素 byName 通过参数名自动装配,如果一个bean的name 和另外一个bean

    2610

    Java+MySQL实现学生信息管理系统

    com.student.dao.StudentDAO;import com.student.util.DBUtil; ** * 模块说明: DAO基类 * *public abstract class BaseDAO { protected final DBUtil db = DBUtil.getDBUtil(); protected ResultSet rs; private static BaseDAO baseDAO (); public static synchronized BaseDAO getAbilityDAO(DAO dao) { switch (dao) { case AdminDAO: if (baseDAO = AdminDAO.class) { baseDAO = AdminDAO.getInstance(); } break; case StudentDAO: if (baseDAO == null | = StudentDAO.class) { baseDAO = StudentDAO.getInstance(); } break; default: break; } return baseDAO;

    11.8K63

    Spring中@Autowired注解、@Resource注解的区别

    required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下: @Autowired() @Qualifier(baseDao ) private BaseDao baseDao; c). @Resource(name=baseDao) private BaseDao baseDao; 推荐使用:@Resource注解在字段上,这样就不用写setter方法了,并且这个注解是属于J2EE的,

    31130

    @Autowired 与@Resource之争

    required属性为false,如: @Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下:@Autowired() @Qualifier(baseDao ) private BaseDao baseDao;3、@Resource 是JDK1.6支持的注解,默认按照名称进行装配 名称可以通过name属性进行指定, 如果没有指定name属性当注解写在字段上时 @Resource(name=baseDao) private BaseDao baseDao; byName 通过参数名 自动装配,如果一个bean的name 和另外一个bean的 property

    602100

    ssh搭建开发环境

    HibernateDaoSupport和HibernateTemplate的支持,使用了原生态的API   * @author 雪精灵   *   * @param   *  public class BaseDao  baseDao;       public void save(T t) throws Exception{          baseDao.save(t);      }      public   getBaseDao() {          return baseDao;      }      public void setBaseDao(BaseDao baseDao) {   this.baseDao  = baseDao;      }  } 四、写7个pojopackage com.sshFrame.zero.pojo;   import java.io.Serializable;  import ,否则baseDao为null;       * 只适用于注入一个Dao       * @param userinfoDao       *      @Autowired      public void

    364111

    通过反射技术获取泛型真实实例

    使用这项技术可以对dao层进行简化处理:把各个dao中相同的方法抽取出来形成一个公共dao:BaseDao代码如下:public class BaseDao implements IBaseDao { 当前操作的实际的bean类型 private Class clazz; 获取类名称 private String className; 反射泛型 public BaseDao(){ Type type this.getClass().getGenericSuperclass(); 转换为参数化类型 ParameterizedType pt = (ParameterizedType) type; BaseDao

    16220

    系统学习javaweb-12-SSH整合开发demo

    IDeptDao deptDao)中传入的deptDao为Proxy代理类(继承了IDeptDao接口),如果为setDeptDao(DeptDao deptDao),则类型不匹配,无法传入 3 抽取BaseDao (反射泛型的应用)将【IOC容器(依赖)注入SessionFactory对象】抽取到BaseDao,作为对比,EmployeeDao继承了BaseDao,其他Dao未继承4 页面包含 5 拦截器配置struts.xml

    18920

    纳税服务系统六(信息发布管理模块)【Ueditor、异步信息交互、抽取BaseService、条件查询、分页】

    来操作数据库 private BaseDao baseDao; @Override public void save(T entity) { baseDao.save(entity); } @Override 我们在BaseServiceImpl中使用了BaseDao这个变量来对数据库进行操作。可是在BaseServiceImpl中是没有BaseDao这个变量的。 首先,要明确的是,我们不能在BaseServiceImpl中注入BaseDao,因为BaseServiceImpl本身就是一个抽象类。那我们怎么对BaseDao进行实例化呢??? 那么我们在注入的时候,就可以调用BaseDao的set方法,把我们要注入的对象给过去。最后,我们在BaseServiceImpl中就有了baseDao这个变量了。 通过BaseDao来操作数据库 private BaseDao baseDao; public void setBaseDao(BaseDao baseDao) { this.baseDao = baseDao

    73660

    继承HibernateDaoSupport时遇到的问题 使用注解为HibernateDaoSupport注入sessionFa

    spring提供的有零配置功能,而且看见别人的一个项目使用spring+mybatis,只在applicationContext.xml里定义了sqlSessionFactory,然后什么都不用配置了,baseDao 我用hibernate模仿着人家的例子,我也只在applicationContext.xml里定义了sessionFactory,basedao继承自HibernateDaoSupport,结果怎么弄都报错啊 最简单的方法,在BaseDao里加入一个方法 @Autowired public void setMySessionFactory(SessionFactory sessionFactory){   super.setSessionFactory

    453100

    继承HibernateDaoSupport时遇到的问题

    spring提供的有零配置功能,而且看见别人的一个项目使用spring+mybatis,只在applicationContext.xml里定义了sqlSessionFactory,然后什么都不用配置了,baseDao 我用hibernate模仿着人家的例子,我也只在applicationContext.xml里定义了sessionFactory,basedao继承自HibernateDaoSupport,结果怎么弄都报错啊 最简单的方法,在BaseDao里加入一个方法 view plaincopy @Autowired public void setMySessionFactory(SessionFactory sessionFactory

    32730

    JavaEE 使用 JQuery 完成 ajax & json 数据的传输

    create table( id int(3) primary key, sname varchar(20), sage int(3), sgender enum(男,女));并插入一些测试数据3.2 编写 BaseDao 封装 BaseDao,用于简化 JDBC 的处理import java.sql.*; public class BaseDao { private String Driver = com.mysql.jdbc.Driver request.setCharacterEncoding(utf-8); String name = request.getParameter(sname); 接收 ajax 传过来的用户输入的内容 System.out.println(name); BaseDao db = new BaseDao(); List list = new ArrayList(); 使用泛型 try { PreparedStatement ps = db.getConnect(select

    2120

    Spring bean注解配置(2)—— @Autowired

    required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下:@Autowired() @Qualifier(baseDao ) private BaseDao baseDao; 3、@Resource(这个注解属于J2EE的),默认安照名称进行装配,名称可以通过name属性进行指定, 如果没有指定name属性,当注解写在字段上时 @Resource(name=baseDao) private BaseDao baseDao; 用 @Resource注解在字段上,且这个注解是属于J2EE的,减少了与spring的耦合。

    37220

    扫码关注云+社区

    领取腾讯云代金券