当前位置: 首页 > news >正文

Spring学习笔记3

使用注解开发:

@Component 组件开发相当于

@Value(“xxx”)可以对属性进行赋值

package pojo;import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
//等价于<bean id="user" class="pojo.User"/>
@Component
public class User {@Value("jack1")public String name;
}

@Component有几个衍生注解我们在web开发中,会按照MVC三层架构分层

dao @Repository

service @Service

controller@Controller

这四个注解功能是一样的,都代表将某个类注册到Spring中,装配Bean

总结:

xml与注解

xml更加万能,适用于任何场合,维护方便

注解不是自己的类使用不了,维护相对复杂

xml和注解最佳实践:

xml用来管理bean

注解只负责完成属性的注入

我们在使用的过程中,只需要注意一个问题:必须让注解生效,就需要开启注解的支持

<context:component-scan base-package="pojo"/>
<context:annotation-config/>

使用Java的方式配置Spring

实体类

package pojo;import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;@Component
public class User {private String name;public String getName() {return name;}@Value("tom")public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +'}';}
}

配置类

package config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import pojo.User;
//类似于beans.xml,本身也是组件@Configuration
@ComponentScan("pojo")
public class MyConfig {//相当与之前的bean标签//方法名相当于id属性//返回值相当于class属性@Beanpublic User getUser(){return new User();//返回要注入bean的对象}
}

测试

import config.MyConfig;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import pojo.User;public class MyTest {public static void main(String[] args) {AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MyConfig.class);User getUser = (User)context.getBean("getUser");System.out.println(getUser.getName());}
}

AOP

角色分析

抽象角色:一般会使用接口或抽象类来解决

真实角色:被代理的角色

代理角色:代理真实的角色,一般添加一些附属操作

客户:访问代理角色的人

代码步骤:1.接口

package demo01;public interface Rent {public void rent();
}

2.真实角色:

package demo01;public class Host implements Rent {public void rent() {System.out.println("房东租房");}}

3.代理角色

package demo01;public class Proxy implements Rent {private Host host;public Proxy() {}public Proxy(Host host) {this.host = host;}public void seeHouse(){System.out.println("look");}public void rent() {seeHouse();host.rent();}
}

4.客户访问

package demo01;public class Client {public static void main(String[] args) {Host host = new Host();Proxy proxy = new Proxy(host);proxy.rent();}
}

代理模式的好处:

1.可以使真实的角色操作更加纯粹,不用关注一些公共业务

2.实现业务分工

3.公共业务发生扩展时,方便集中管理

动态代理

http://www.lryc.cn/news/127778.html

相关文章:

  • springboot艰难版本升级之路!! springboot 2.3.x版本升级到2.7.x版本
  • Codeforces 1856E2 复杂度分析 + DP
  • Windows - UWP - 为UWP应用创建桌面快捷方式
  • 了解Web DDoS海啸攻击的4个维度
  • 【数学建模】逻辑回归算法(Logistic Resgression)
  • Hadoop HA集群两个NameNode都是standby或者主NameNode是standby,从NameNode是active的情况集锦
  • [Go版]算法通关村第十一关白银——位运算的高频算法题
  • Swift 基础
  • IDEA的常用设置,让你更快速的编程
  • docker 镜像的导出与导入 save 与 load
  • WPF显示初始界面--SplashScreen
  • 08- AD/DA模/数转换
  • DTC服务(0x14 0x19 0x85)
  • 【国护攻防场景下的沙箱技术对比】
  • springboot综合案例第三课
  • 面试经典150题——罗马数字转整数
  • 第三篇|金融人数据来源有哪些
  • 爬虫逆向实战(二)--某某观察城市排行榜
  • Grafana Prometheus 通过JMX监控kafka 【2023最新方式】
  • 发布游戏,进行打包。(Unity)
  • 我的C++待办事项
  • 浙大数据结构第七周之Saving James Bond - Hard Version
  • 线程同步条件变量
  • jeecgboot-vue3 查询区 label 文字居左实现
  • CentOS系统环境搭建(五)——Centos7安装maven
  • .eslintrc配置
  • LangChain手记 Models,Prompts and Parsers
  • Cannot resolve plugin ... maven插件和依赖无法下载解决方法
  • 【skynet】skynet 服务间通信
  • Flink的Standalone部署实战