Spring入门简介

1、Spring根本使命,简化Java开发

其采用的关键策略:

1)基于pojo的轻量级、最小侵入性编程;

POJO(Plain Ordinary Java Object)即普通Java类,具有一部分getter/setter方法的那种类就可以称作POJO。实际意义就是普通的JavaBeans(简单的实体类),特点就是支持业务逻辑的协助类。POJO类的作用是方便程序员使用数据库中的数据表,对于程序员来说,可以很方便的将POJO类当作对象来进行使用,也可以方便的调用其get,set方法。

通过依赖注入来装配pojo;

2)依赖注入和面向接口实现松耦合;

耦合具有两面性,紧密耦合使得代码难以复用,并且出现打地鼠式得bug;完全没有耦合的代码没有实际意义;依赖注入(DI)就是对象的依赖关系将由复杂协调系统中各个对象的第三方组件在创建对象时设定。不需要new而是作为参数传入,这是其中一种依赖注入方式,构造器注入;

常用的注入方式主要有三种:构造方法注入,set方法参数注入,接口注入。

创建应用组件之间写作的行为称为装配;spring有多种装配bean的方式,采用xml配置最为常见;

<bean id="right" class="com.springnaction.right.Braveright">

<constructor-arg ref="quest">

</bean>

Spring通过应用上下文(Application Context)装载bean的定义并把它们组装起来,Spring应用上下文全负责对象的创建和组装;

3)基于切面和惯例进行声明式编程;

AOP切面允许松散耦合的功能形成可重用的组件;常用日志、事务管理和安全等切面关注点的部分;aop使这些服务模块化,并以声明的方式将他们应用到需要影响的组件中;

需要在Spring配置文件中声明切面,

<bean id = "minstrel" class="com.spring.Minstrel">

<aop:config>

<aop:aspect ref="minstrel">

<aop:pointcut id="emback" expression="execution(* *.embarkOnQuest(..))" />

<aop:before pointcut-ref = "embark" method="sinBeforeQuest">

<aop:after pointcut-ref = "embark" method="sinAfterQuest">

</aop:aspect>

</aop:config>

</beans>

先声明为一个bean,然后引用该bean,进一步定义切面,before为前置通知,after为后置通知;

4)通过切面和模板封装;

例如数据库链接、关闭数据库链接等都通过模板来解决代码冗余。Spring通过JdbcTemplate使得避免传统JDBC版式代码;

    private DataSource dataSouce;
    /**
     * 加载jdbc
     * @return
     */
    public JdbcTemplate getJdbcTemplate() {
        return new JdbcTemplate(dataSouce);
    }

 2、容纳Bean

1)Spring自带容器:Bean工厂简单容器,提供基本的DI支持;应用上下文,基于BeanFactory之上构建,并提供面向应用的服务,例如从属性文件解析文本信息的能力,以及发布应用事件给感兴趣的事件监听者的能力。

2)Spring自带几种类型的上下文:

  • ClassPathXmlApplicationContext-从类路径下的XML配置文件中加载上下文定义,把应用上下文定义当作类资源;
  • FileSystemXmlApplicationcontext-读取文件系统下的xml配置文件并加载上下文定义;
  • XmlWebApplicationContext-读取web应用下的xml配置文件并装载上下文定义;

通过现有的应用上下文引用,可以通过调用应用上下文的getBean()方法从Spring容器中获取bean;

3)Bean的生命周期

(1)spring对bean实例化;

(2)spring将值和bean的引用注入到bean对应的属性中;

(3)如果bean实现了BeanNameAware接口,将bean的ID传递给setBeanName()接口方法;

(4)如果bean实现了BeanFactoryAware接口,调用setbeanFactory()接口方法,将beanFactory容器实例传入;

(5)如果有定义BeanPostProcessor接口,则调用该接口的postProcessBeforeInitialization(Object bean, String beanName)方法该方法可以对Bean实例进行额外的增加处理操作。可以是全局针对所有Bean进行统一处理,ApplicationContext初始化时会自动找到实现该接口的类进行所有Bean的增强处理;

(6)如果Bean实现了InitializingBean接口,且该接口有 @PostConstruct修饰的方法,则执行该方法(该注解方法是BeanPostProcessor的postProcessBeforeInitialization中执行的),然后执行afterPropertiesSet()方法;该方法没有参数,不能对该Bean进行处理,可以增加比如日志、读取配置文件之类的操作;

(7)如果Bean自定义了init-method指定的方法,则调用该方法;

(8)接着调用BeanPostProcessor接口的postProcessAfterInitialization(Object bean, String beanName)方法;

(9)如果Bean实现了DisposableBean接口,则调用该接口的destory()方法。同InitializingBean类似,该接口如果有指 @PreDestory注解修饰的方法,也会先调用该方法;

(10)如果Bean指定了destory-method方法,则执行该方法;

3、Spring模块

补充:

Spring Boot基本上是Spring框架的扩展,它消除了设置Spring应用程序所需的XML配置,为更快,更高效的开发生态系统铺平了道路。

持续更新,未完待续。。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洋葱ycy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值