`
高成锋
  • 浏览: 52735 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

spring学习总结【二】

阅读更多

1.1. 依赖注入

当我们把依赖对象交给外部容器去创建时,那么PersonServiceBean类可修改如下:

public class PersonServiceBean{

private PersonDao persondao;

//通过构造参数,让容器把创建好的依赖对象注入到PersonServiceBean中,当然也可以通过setter方法进行注入。

public PersonServiceBean(PersonDao persondao){

this.persondao = persondao;

}

public void save(){

persondao.add();

}

}

<bean id="persondao" class="com.sun.demo.PersonDaoBean" />

<bean id="personService" class="com.sun.demo.PersonServiceBean" >

<property  name="persondao" ref="persondao" />

</bean>

//通过setter方法注入而不能同时存在构造方法。

<constructor-arg  ref="persondao" />

//构造器注入

注意:在配置文件中若同时配置了构造器和setter方法注入,那么类中也必须对应的有构造方法和setter方法,后台配置中用setter方法则类中不能有构造器对注入属性进行赋值。两种方法必须对应出现,优先以构造方法为主。

<property  name="persondao">

<bean  class="com.sun.demo.PersonDaoBean" />

</property>

//区别于以上两种方式,这个是内部注入的方式,这个bean只能为当前bean调用

除此以外,还可以对一些基本类型属性进行赋值

<property  name="username"  value="zhanshan" />

集合类型的装配:

对于一些集合类型的属性

private Set<String>  sets = new HashSet<String>();

<bean id="personService" class="com.sun.demo.PersonServiceBean">

<property  name="sets">

<set><value>需要注入的值</value></set>

</property>

<property  name="properties">

<props><prop key="key">value</prop></props>

</property>

<property  name="maps">

<map><entry  key="key"  value="value" /></map>

</property>

</bean>

前台打印方式:

for(String  value : personService.getSets()){

System.out.println(value);

}

for(Object  key : personService.getProperties().keySet()){

System.out.println(personService.getProperties().getProperty((String)key));

}

for(String  key : personSetvice.getMaps().keySet()){

System.out.println(personSerive.getMaps().get(key));

}

使用Field注入【用于注解方式】

1.2. 实例化spring容器

(1)Resource  resource = new ClassPathResource("applicationContext.xml");

 XmlBeanFactory  factory = new XmlBeanFactory(resource);

(2)InputStream  is = new FileInputStream("d:/config/applicationContext.xml");

 Resource  rs = new InputStreamResource(is);

 XmlBeanFactory  factory = new XmlBeanFactory(rs);

(3)ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");

(4)ApplicationContext ctx = new FileSystemXmlApplicationContext(new String[]  {"d:\\bean.xml"});

(5)String[] configFile = {applicationContext.xml};

 ApplicationContext  ctx = new ClassPathXmlApplicationContext(configFile);

 BeanFactory  bean = (BeanFactory)ctx;

1.3. 连接Hibernate访问数据库

1Resource  resource = new ClassPathResource("applicationContext.xml");

     XmlBeanFactory  factory = new XmlBeanFactory(resource);

 SessionFactory sessionFactory = factory.getBean("mySessionFactory");

//mySessionFactory在配置文件中已经配置好

 HibernateTemplate template = new HibernateTemplate();

 template.setSessionFactory(sessionFactory);

 List list = template.find("select userId from com.sun.demo.UserInfo");

(2)主要就是获取配置文件中的上下文,进而提取Bean节点,另一种方法就是将其设为类的属性,在生成一个类的时候自动加载配置文件中的信息进行依赖注入属性值

template.find();

template.load();

template.save();

template.update();

template.get();

(3)部分代码同上

HibernateTemplate  ht = new HibernateTemplate(mySessionFactory);

final String hql = "update UserInfo set password = ''1234";

Object obj = ht.execute(new  HibernateCallBack()){

public Object doInHibernate(Session session)throws  HibernateException,....{

String hql = "update ......";

Query query = session.createQuerty(hql);

return query.execueteUpdate();

}

};

HibernateDaoSupport

可以简化模板,不用再生成新对象HibernateTemplate,也不用可以类属性SessionFactory,直接用this.getHibernateTemplate()

JdbcDaoSupport

注意:同种方法有不同的实现体,即重载方法,可以进行参数的动态给予。

1.4. SSH框架整合

注意添加需要的jar

(1)新建一个action类继承ActionSupport,则:

ApplicationContext ctx = this.getWebApplicationContext();

struts-config.xml文件中配置如下信息加载applicationContext.xml

<plug-in  calssName="org.springframework.web.struts.ContextLoaderPlugIn">

<set-property 

    property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" />

</plug-in>

(2)web.xml文件中配置

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/applicationContext.xml</param-value>

</context-param>

<listener>

       <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

(3)web.xml中配置

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/applicationContext.xml</param-value>

</context-param>

<servlet>

<servlet-name>自定义名称</servlet-name>

<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>

<load-on-startup>1</load-on-startup>

</servlet>

以上三种方式都是在action类继承了ActionSupport之后的配置

(4)IOC依赖注入,继承SSH框架

以往我们在访问login.do的时候都是根据配置文件,去查找对应得Action

<action path="/login" scope="request" type="com.sun.demo.LoginAction" />

现在我们需要修改一下type的值

<action path="/login" type="org.springframework.web.struts.DelegatingActionProty" />

同时需要以上三种配置方式中的一种方式来指定查找的spring配置文件applicationContext.xml,在spring的配置文件中根据path去查找bean节点的name值,进而去访问action类,同时对于某些可能用到的用户自定义类也可以配置为Action类的属性,进而直接调用。

<!--EndFragment-->
分享到:
评论

相关推荐

    关于Spring学习总结

    二、Spring的核心特性 1. **依赖注入**:Spring通过DI使对象之间的关系在运行时动态配置,而不是在代码中硬编码。这使得组件的使用和实现解耦,更便于测试和维护。 2. **面向切面编程**:AOP允许开发者定义"切面",...

    Spring学习笔记 自我总结

    spring学习笔记

    Spring Security学习总结一

    ### Spring Security核心概念与实践详解 #### Spring Security概述 在深入了解Spring Security之前,我们先回顾一下没有Spring Security的权限管理场景。在传统架构中,权限验证逻辑往往与业务逻辑紧密交织,导致...

    Spring Security 学习总结1_3

    除此之外,官方文档、GitHub仓库、Stack Overflow和各种在线课程都是深入学习Spring Security的好资源。 总的来说,Spring Security是一个功能强大且灵活的安全框架,它的核心机制包括用户认证、权限授权,以及丰富...

    Spring学习技术总结

    课程学习时候的笔记总结,这里面没有代码部分,全是知识点的总结,方便大家去面试回答

    Spring学习总结笔记

    以上就是Spring学习笔记的初步概述,涵盖了Spring的基本架构、配置文件的创建和加载,以及依赖注入的主要方式。随着学习的深入,还可以涉及AOP、Spring MVC、Spring Boot、Spring Data等更高级的主题,从而更好地...

    Spring MVC 学习记录总结1

    在这个学习记录总结中,我们将深入理解Spring MVC的核心概念、主要组件以及其工作流程。 1. Spring MVC 概述 Spring MVC 是Spring框架的一部分,它基于Spring IoC(Inversion of Control,控制反转)容器,简化了...

    【狂神说】spring PDF学习总结笔记 Spring5.pdf

    【狂神说】Spring PDF学习总结笔记主要涵盖了Spring框架的核心概念、优点、组成部分以及相关扩展。Spring是一个由Rod Johnson创建的开源框架,旨在简化企业级应用开发的复杂性,它结合了众多现有技术,如SSH(Struct...

    SpringSecurity学习总结源代码

    SpringSecurity是Java开发中用于构建安全Web应用的框架,它提供了强大的身份验证、...在学习过程中,分析提供的源代码和示例将有助于深入理解SpringSecurity的工作原理,并能帮助你在实际项目中有效地应用这些知识。

    Spring学习总结!

    《Spring学习深度剖析》 Spring框架作为Java领域最广泛应用的轻量级框架,以其强大的功能、灵活的设计和广泛的社区支持,成为了开发企业级应用的重要工具。这篇总结将深入探讨Spring的核心概念、主要特性以及实际...

    Spring学习总结(不含整合其他框架)

    ### Spring学习总结(不含整合其他框架) #### 一、Spring框架简介 **Spring** 是一个开源框架,旨在简化企业级应用开发。通过使用Spring,即使是简单的JavaBean也可以实现原本只有EJB才能完成的功能。Spring的...

    spring security 学习总结文档

    【Spring Security 学习总结】 Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,用于保护基于 Java 的应用程序。本学习总结文档主要针对初学者,旨在剖析一个不安全的应用程序并阐述如何通过 ...

    Spring Security学习总结

    在"Spring Security学习总结一(补命名空间配置)"的文件中,可能涵盖了如何在Spring Security的XML配置中补充命名空间的步骤。命名空间的引入是为了简化配置,例如`&lt;http&gt;`元素用于配置安全拦截和访问规则,`...

    spring知识点总结

    **Spring框架概述** Spring是一个开源的Java平台,它主要为构建企业级应用提供全面的框架支持。...通过阅读提供的文档、教程和知识点总结,可以系统地学习和理解Spring,从而提升自己的开发能力。

Global site tag (gtag.js) - Google Analytics