IOC和AOP
1.搭建spring:(1)添加jar包(2)设置配置文件(3)
2.获取配置文件:
AplicationContext apct=new ClassPathXmlApplicationContext("bean.xml");
service=apct.getBean("获取一个bean");
IOC配置和应用
一,xml配置
1.注入方式
(1)setter @Resource
(2)构造方法注入
(3)结构注入
Xml:<bean id="需要注入的名称(name)" class="">
</bean>
<bean id="" class="">
<property name="名称" ref="引用名称"/>
<constructor-arg>//构造方法的注入
<ref bean="引用注入的名称(name)"/>
</constructor-arg>
</bean>
2.bean的scope:singleton(单例,一直都是一个对象),prototype(每声明一次将获取不同的对象),request,session,global session
3.集合注入:
参考相关文档//set,list,map 的注入
<property name="set">
<set>
<value></value>
<value></value>
</set>
</property>
4.简单属性注入:<property name="属性名" value="值"/>
5.自动装配:
(1)在<bean标签上 autowire="(byName,byType....)" 默认按byName(按名字装配) byType(按类型来装配,如果同一类型有两个时将报错)
(2)在beans标签上 default-autowire="byName" 指定全局的默认装配方式
6.生命周期
<bean lizy-init="true" 表示在用到时才会初始化该bean,而在启动服务器时并不进行初始化()
<bean init-method="初始化加载的方法" destroy-method="结束的方法"
二,Annotation配置
1.修改bean.xml配置文件加入xmlns命名空间和<context:annotation-config/>
2.自动装配: 在相应的属性上注解 @Autowired @Qualifier(name="指定bean.xml中的bean的id")
example:
(1) @Autowried
public void setName(@Qualifier("name")String name){
}
@Required //表示必须要写的方法,在初始化时将检查该项
(2) @Resource(name="注入名") //重要
在配置文件中设置:
<context:component-scan base-package="指定需要查询的包"/> //使用该项将自动在包下面去查找
在需要注入的类中注解:@Component(value="注入名")
(还存在其他的注解:@Repostory,@Service,@Cntroller)
3.生命周期
@Scope("prototype/singleton") //生存范围
构造完成之后:@PostConstruct 相当于xml中的init-method,指加载该类时执行的方法
@PreDestroy 容器销毁之前执行的方法,相当于xml中的destroy-method.
面向切面编程(AOP)
一,Annotation配置AOP
1.添加日志逻辑
2.添加xmlns命名空间,在添加配置<aop:aspectj-autoproxy/> //使用aspectj注解
(aspectj是一个专门用来产生代理(面向AOP)的框架)
在切面类上配置注解 @Aspect @Component, 在方法上配置 @Before(植入点语法)
植入点语法:
例子:execution(public void cn.bywei.dao.impl.UserDaoImpl.save(cn.bywei.model.User))
execution(* cn.bywei.dao.impl.*.*(*))
JoinPoint 连接点
PointCut
Aspect 切面
Advice 切面上的逻辑(@before,@after),加在切入点上的建议
Target 被代理的对象,把我们的逻辑植入的对象
Weave 植入
(1)@Pointcut("execution(* cn.bywei.dao.impl.*.*(*))")
public void myMethod(){};
@Before("myMethod()")
(2)@After //
(3)@AfterThrowing //当抛异常时
(4)@Around("myMethod()")
public void around(ProceedingJoinPoint pjp){
pjp.proceed();
}
二,xml配置AOP
数据源配置
1.dpcp
(1)直接在文件中配置数据库连接信息dbcp.BasicDataSource
(2)配置一个
<bean class="***.PropertyPlaceholderConfigurer">//通过占位符配置
<property name="locations">
<value>classpath:jdbc.properties</value>
</property>
</bean>
dataSource中通过占位符来配置读取 jdbc.properties文件中的信息.
2.c3p0
3.proxool
Spring和Hibernate整合
1.建立SessionFactory
在 LocalSessionFactoryBean中不支持Annotation
而 可以使用 AnnotationSessionFactoryBean 来支持Annotation
<property name="dataSource" ref="dataSource"/> //注入属性
//配置需要注解的实体类
(1)<property name="annotatedClasses">
<list>
<value>cn.bywei.model.User</value>
</list>
</property>
(2)自动扫描包下面的实体类
<property name="packageToScan">
<list>
<value>cn.bywei.model</value>
</list>
</property>
//指定Hibernate的配置信息
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props
</property>
2.aop主要使用在声明式事务管理
Annotation:
(1)在xml配置文件中添加命名空间
添加事务管理 <tx:annotation-driven transaction-manager="txManager"/>
添加<bean id="txManager" class="*****.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
在一个方法上加事务:@Transactional
Xml:
3.HibernateTemplate
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
使用:
hibernateTemplate.save(User);
hibernateTemplate封装了一系列的方法.
callback() --回调
4.
@Component
public class SuerDao extends HibernateDaoSupport {
@Resource("sessionFactory")
public void setSuperSessionFactory(SessionFactory sessionFactory){
super.setSessionFactory(sessionFactory);
}
}
this.getHibernateTemplate().save(实体类);
5.初始化bean
配置
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
引入配置文件:
<contenxt-param>
<param-name>contextconfig</param-name>
<param-value>claspah:beans.xml</param-value>
</context-param>
6.使用load时,配置把session打开到视图层
<filter>
<filter-name>openSessionInView</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInView</filter-class>
</filter>
<filter-mapping>**************
********</filter-mapping>
7.中文问题
<filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>**************
********</filter-mapping>
分享到:
相关推荐
这份文档作为复习资料,可能没有详细到适合完全初学者的程度,但对于有基础的开发者来说,它是回顾和提升Spring MVC技能的好帮手。建议初学者配合视频教程或更详尽的指南来学习,以便更好地理解每个概念并进行实践...
7. **Java配置**:Spring4.2.1进一步强化了Java配置,使得开发者可以完全摆脱XML配置,使用纯Java类进行配置。 8. **类型安全的转换服务(Conversion Service)**:Spring4.2.1提供了更强大的类型转换系统,确保了...
6. **Java配置**:Spring 4.3进一步推广了Java配置,使得开发者可以完全避免XML配置,提高代码的可读性和可维护性。 7. **反应式编程支持**:虽然Spring 4.3尚未引入完整的反应式编程支持,但它是Spring 5中引入...
### 传智播客 Spring 完全文档 笔记总结 #### 一、Spring入门 ##### 1.1 Spring简介 - **定义**:Spring 是一个开源的控制反转(Inversion of Control, IoC)和面向切面(Aspect Oriented Programming, AOP)的...
Spring 3.0 完全基于Java 5进行构建,这意味着它充分利用了Java 5及更高版本的语言特性,如泛型、枚举、可变参数等,这为开发者提供了更为简洁的编程模型。 ##### 2.2 文档改进 随着Spring 3.0的到来,官方提供了...
spring学习资料集合,源码+文档 注释详细 完全超值。 jdk代理,springAOP,IOC,注入全部 分工程详细介绍,这是我个人总结的想了好久决定拿出来跟大家分享,希望更多的人能够掌握它,谢谢
- **基于Java的配置**:完全使用Java代码来配置Spring容器,提高了灵活性和类型安全性。 #### 实例化一个容器 根据不同的需求,可以通过不同的方式来实例化Spring IoC容器。例如,如果使用XML配置文件,可以通过`...
标题中的“spring2.0学习笔记+spring定时任务”表明了这个压缩包文件包含的是关于Spring框架2.0版本的学习资料,特别是关于Spring的定时任务功能。Spring是Java开发中最广泛应用的轻量级框架之一,它提供了一整套...
有java api中英文版,Ajax_XMLHttpRequest帮助文档,Apache+Ant+1.7,Comm2.0_参考手册,DHTML_网页制作完全手册_中文,DHTML文档对象模型中文手册,DOS_练就高手,Hibernate3.1.2_帮助文档_中文,Hibernate3.2_帮助...
由于这是一个仅用于学习目的的项目,因此可能无法完全翻译。 Hangul Spring Framework 参考文档 4.1.6.RELEASE (当前) Hangul Spring Framework 参考文档 4.1.5.RELEASE (工作到 ~overview.html 后暂停) 参考...
总的来说,Spring Security 3提供了多种适应不同需求的安全解决方案,从简单的配置文件到完全数据库驱动,甚至对源码的深度定制,为企业级应用的安全管理提供了全面的支持。开发者可以根据项目规模、复杂度以及团队...
前后端基于json进行交互,接口通过JWT无状态token进行权限校验,使用redis或者数据库进行token缓存,接口完全采用Restful的风格,实现按钮级权限控制,可以作为开发项目的脚手架,做为基础项目。 该版本为mybatis版...
这个资源包包含了Spring3.0的核心组件、示例代码以及中文文档,对于学习和理解Spring框架具有极大的帮助。 Spring3.0主要改进了以下几方面: 1. **AOP增强**:在Spring3.0中,面向切面编程(AOP)支持得到了显著...
该架构是一个商业级项目升级优化而来,采用Spring Boot 2.7和Spring Cloud 2021等核心技术构建,完全遵循阿里巴巴编码规范。它提供基于React和Vue的两个前端框架,用于快速搭建企业级的SaaS多租户微服务平台。适合...
3. **关注官方文档**:Spring Cloud 的官方文档非常详尽,及时更新最新的版本信息和技术细节。 4. **参与社区交流**:加入 Spring Cloud 的官方论坛、GitHub 仓库等社区平台,可以获取最新的技术资讯,遇到问题也...
Spring Boot自从问世以来,就以其简化配置、快速启动、独立运行等特点深受Java开发者的喜爱。Spring Boot 2.0.0 RELEASE版本作为框架发展...作为开发者,完全有必要深入学习和掌握这些新特性,以便更好地在项目中应用。
通过深入学习和使用Spring Framework 5.2.9.RELEASE,开发者不仅可以提升个人技能,也能构建出高效、健壮的企业级应用。无论你是初学者还是经验丰富的开发者,这个版本都值得你投入时间和精力去探索。
《Spring应用开发完全手册》是全面深入学习Spring框架的重要资源,涵盖了从基础到高级的多个主题。在这三章中,我们将重点关注三个关键领域:生成Excel文件、实现留言本功能以及文件上传。 第12章“生成Excel文件”...
这篇文档集合涵盖了Java开发的核心领域,包括JDK,Spring框架,JQuery库,以及JavaScript语言。这些技术在现代Web开发中扮演着至关重要的角色。让我们逐一深入探讨它们的知识点。 首先,JDK(Java Development Kit...