Introdução às funções centrais do Spring e etapas de desenvolvimento

Introdução

Rod Johnson (o pai do Spring) , lançou a versão mais recente do Spring Spring 5.0 General Edition (GA) em setembro de 2017. Spring é uma estrutura de código aberto leve de pilha completa de aplicativo Java SE / EE em camadas, com IoC (Inverse Of Control) e AOP (Aspect Oriented Programming) como o núcleo. Fornece muitas tecnologias de aplicativos de nível empresarial, como a camada de apresentação (SpringMVC), camada de persistência (pring JDBCTemplate) e gerenciamento de transações da camada de negócios. Também pode integrar muitos frameworks de terceiros conhecidos e bibliotecas de classe no mundo de código aberto, gradualmente se tornando o Java EE empresarial mais usado Aplique a estrutura de código aberto!

Recursos

1. Facilitar a dissociação e simplificar o desenvolvimento

O contêiner IOC fornecido pelo Spring permite que o Spring controle as dependências entre os objetos para evitar o acoplamento excessivo causado pela codificação permanente. Os usuários não precisam mais escrever código para requisitos de baixo nível, como classes de padrão singleton e análise de arquivo de propriedade, e podem se concentrar mais em aplicativos de nível superior.

2. Suporte de programação AOP

A função AOP do Spring facilita a programação orientada a aspectos. Muitas funções que não são fáceis de implementar com OOP tradicional podem ser facilmente implementadas por meio do AOP.

3. Suporte de transação declarativa

Ele pode nos libertar do código de gerenciamento de transações monótono e enfadonho e realizar o gerenciamento de transações de forma flexível de forma declarativa para melhorar a eficiência e a qualidade do desenvolvimento.

4. Conveniente para teste de programa

Quase todo o trabalho de teste pode ser executado em um método de programação não dependente de contêiner.O teste não é mais uma operação cara, mas algo que pode ser feito à mão.

5. Integração conveniente de várias estruturas excelentes

O Spring oferece suporte a vários frameworks excelentes (Struts, Hibernate, Hessian, Quartz, etc.).

6. Reduza a dificuldade de usar a API JavaEE

O Spring tem uma camada de encapsulamento fina para APIs JavaEE (como JDBC, JavaMail, chamadas remotas, etc.), o que reduz muito a dificuldade de usar essas APIs.

7. O código-fonte Java é um paradigma de aprendizagem clássico

O design do código-fonte do Spring é requintado, claro na estrutura e engenhosidade original.Ele reflete o uso flexível do mestre de padrões de design Java e conhecimento avançado da tecnologia Java. Seu código-fonte não pretende ser um exemplo de boa prática da tecnologia Java.

Duas funções principais

IOC (Inversão de Controle)

1.Bean标签范围配置
singleton       默认值,单例的  
prototype       多例的                                              
request         WEB项目中,Spring创建一个 Bean 的对象,将对象存入到 request 域中 
session         WEB项目中,Spring创建一个 Bean 的对象,将对象存入到 session 域中 
global session  WEB项目中,应用在 Portlet环境,如果没有 Portlet 环境那么globalSession 

2.当scope的取值为singleton时

​ Bean的实例化个数:1个
​ Bean的实例化时机:当Spring核心文件被加载时,实例化配置的Bean实例
​ Bean的生命周期:
    对象创建:当应用加载,创建容器时,对象就被创建了
    对象运行:只要容器在,对象一直活着
    对象销毁:当应用卸载,销毁容器时,对象就被销毁了

3.当scope的取值为prototype时

​ Bean的实例化个数:多个
​ Bean的实例化时机:当调用getBean()方法时实例化Bean
  Bean的生命周期:
    对象创建:当使用对象时,创建新的对象实例
    对象运行:只要对象在使用中,就一直活着
    对象销毁:当对象长时间不用时,被 Java 的垃圾回收器回收了

4.Bean的三种实例化方式

  1) 使用无参构造方法实例化
  <bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"/>
  
  ---
  2) 工厂静态方法实例化
  public class StaticFactoryBean {
      public static UserDao createUserDao(){    
      return new UserDaoImpl();
      }
  }
  
  ---
  <bean id="userDao" class="com.itheima.factory.StaticFactoryBean"  factory-method="createUserDao" />
  
  3) 工厂实例方法实例化
  public class DynamicFactoryBean {  
  	public UserDao createUserDao(){        
  		return new UserDaoImpl(); 
  	}
  }
  
  ---
  <bean id="factoryBean" class="com.itheima.factory.DynamicFactoryBean"/>
  <bean id="userDao" factory-bean="factoryBean" factory-method="createUserDao"/>

5.Bean的依赖注入的数据类型

  1)  普通数据类型
  
  2)  引用数据类型
  
  3)  集合数据类型

6.引入其他配置文件 <import resource="applicationContext-xxx.xml"/>

7.ApplicationContext的继承体系(spring相关API)

  1)ClassPathXmlApplicationContext 它是从类的根路径下加载配置文件 推荐使用这种
  
  2)FileSystemXmlApplicationContext 它是从磁盘路径上加载配置文件,配置文件可以在磁盘的任意位置。
  
  3)AnnotationConfigApplicationContext 当使用注解配置容器对象时,需要使用此类来创建 spring 容器。它用来读取注解。

8.注解开发
@Configuration   声明该类是核心配置类,容器创建时从该类上加载注解        
@ComponentScan   注解扫描                               
@Bean            实例化对象                                                                                                
@PropertySource  加载配置资源
@Import          引入资源     
@Component       实例化bean
@Controller      web层实例化bean
@Service         service层实例化bean
@Repository		 dao层实例化bean     
@Autowired       依赖注入
@Qualifier       结合@Autowired一起使用用于根据名称进行依赖注入
注意:
使用注解进行开发时,需要在applicationContext.xml中配置组件扫描,作用是指定哪个包及其子包下的Bean需要
进行扫描以便识别使用注解配置的类、字段和方法。

AOP (Programação Orientada a Aspectos)

Introdução

AOP é a abreviatura de Aspect Oriented Programming, que significa programação orientada a aspectos. É uma tecnologia que atinge a manutenção unificada das funções do programa por meio de agentes dinâmicos de pré-compilação e execução.

efeito

Durante a execução do programa, o método é aprimorado sem modificar o código-fonte

Vantagem

Reduza o código repetitivo, melhore a eficiência do desenvolvimento e facilite a manutenção

Implementação de baixo nível

A camada inferior do AOP é realizada pela tecnologia de proxy dinâmico fornecida pela Spring. Durante a operação, o Spring gera objetos proxy dinamicamente por meio da tecnologia de proxy dinâmico e, quando o método do objeto proxy é executado, a função aprimorada é envolvida e o método do objeto de destino é chamado para completar o aprimoramento da função.
Agente JDK: tecnologia de agente dinâmico baseada na interface
agente cglib: tecnologia de agente dinâmico baseada na classe pai

Termos comuns

- Target(目标对象):代理的目标对象

- Proxy (代理):一个类被 AOP 织入增强后,就产生一个结果代理类

- Joinpoint(连接点):所谓连接点是指那些被拦截到的点。在spring中,这些点指的是方法,因为spring只支持方法类型的连接点

- Pointcut(切入点):所谓切入点是指我们要对哪些 Joinpoint 进行拦截的定义

- Advice(通知/ 增强):所谓通知是指拦截到 Joinpoint 之后所要做的事情就是通知

- Aspect(切面):是切入点和通知(引介)的结合

- Weaving(织入):是指把增强应用到目标对象来创建新的代理对象的过程。spring采用动态代理织入,而AspectJ采用编译期织入和类装载期织入

Etapas de desenvolvimento

①导入 AOP 相关坐标(aspectlweaver)

②创建目标接口和目标类(内部有切点)

③创建切面类(内部有增强方法)

④将目标类和切面类的对象创建权交给 spring

⑤在 applicationContext.xml 中配置织入关系

⑥测试代码

Expressão de ponto de corte

execution([修饰符] 返回值类型 包名.类名.方法名(参数))
例如:
execution(public void com.aop.Target.method())	
execution(void com.aop.Target.*(..))
execution(* com.aop.*.*(..))
execution(* com.aop..*.*(..))
execution(* *..*.*(..))

Se você tiver dúvidas ou opiniões diferentes, deixe uma mensagem e troquem com eles. O blogueiro responderá assim que ver ...

Acho que você gosta

Origin blog.csdn.net/mrhs_dhls/article/details/106052589
Recomendado
Clasificación