Java整理17

1、Annotation

复制代码
基于注解管理bean
	使用注解实现自动装配,格式:@注解名称(属性=属性值)
	(1)引入依赖
	(2)开启组件扫描
		在bean.xml中								
		<context:component-scan base-package="com.atgui"></context>
		base-package="包路径":扫描指定包和子包下的所有类,若有注解,则该类型装配到容器中
	(3)使用注解定义bean
	(4)依赖注入
@Component应用于任何层次
@Repositry		Dao层
@Service		Service层
@Controller		控制层
属性注入
	方法一:@Autowired		根据类型装配
		@Autowired			根据类型找到对应对象完成注入
		private UserService userService
	方法二:set注入
		生成对应set方法,然后上方写@Autowired
	方法三:构造方法注入
	方法四:形参上注入
		(@Autowired 参数列表)
	方法五:两个注解
		@Autowired
		@Qualifier(value="类名首字母小写")
@Resource注入
	默认根据根据名称装配byName,若指定name时使用属性名作为name,通过name找不到的话会自动启动通过类型byType装配。
在接口实现类上添加@Service(value=名称xx)
在属性上添加@Resource(name=名称xx)完成注入

2、全注解开发

复制代码
用配置类替换xml配置文件
定义类,类上添加@Configuration声明为配置类
添加@ComponentScan("包名")扫描包其子包
将引入xml文件改为加载配置类
原来:
	ApplicationContext context=new ClassPathXmlApplicationContext("bean.xml")
改为:
	ApplicationContext context=new AnnotationConfigApplicationContext(SpringConfig.class)

3、其它

复制代码
获取calss对象的多种方式:
	(1)类名.class							Car.class
	(2)对象.getClass()						new Car().getClass()
	(3)class.forName("全路径_包名.类名")		class.forName("类最上面Package值.类名")
实例化
	=clazz.getDeclaredConstrctor().newInstance();		
获取所有构造:
	Constructor[] constructors=clazz.getConstructors();	获取所有public的构造方法
	Constructor[] constructors=clazz.getDeclaredConstructors();	获取所有包括私有的构造方法
指定有参构造创建对象:
	Constructor c1=clazz.getConstructor(参数类型.class,......)	有参构造public方法
	Constructor c2=clazz.getDeclaredConstructor(参数类型.class,......)	有参构造private方法
	c2.setAccessible(true);允许访问
获取属性:
	Field[] files=getFileds()				获取公有属性
	Field[] files=getDeclaredFileds()		获取所有属性包括私有属性
	for(Field field:files)
	{
		if(filed.getName.equals("name"))
		{
			field.setAccessible(true);
			field.set()
		}
	}
获取方法:
	Method[] m=clazz.getMethods();				公有方法
	Method[] m=clazz.getDeclaredMethods();		所有方法
执行指定方法:
	if(m.getName().equals.("待执行方法名"))
		m.invoke(实参)
相关推荐
卷毛的技术笔记几秒前
从“拆东墙补西墙”到“最终一致”:分布式事务在Spring Boot/Cloud中的破局之道
java·spring boot·分布式·后端·spring cloud·面试·rocketmq
我就是马云飞5 分钟前
我废了!大厂10年的我面了20家公司,面试官让我回去等通知!
android·前端·程序员
ERBU DISH7 分钟前
修改表字段属性,SQL总结
java·数据库·sql
Ulyanov12 分钟前
《玩转QT Designer Studio:从设计到实战》 QT Designer Studio数据绑定与表达式系统深度解析
开发语言·python·qt
yizhiyang23 分钟前
ECharts实战:滑动缩放+选中背景高亮,打造高颜值统计图表
前端
猫山月27 分钟前
Flutter路由演进路线(2026)
前端·flutter
We་ct28 分钟前
LeetCode 322. 零钱兑换:动态规划入门实战
前端·算法·leetcode·typescript·动态规划
袋鱼不重31 分钟前
Hermes Agent 直连飞书机器人
前端·后端·ai编程
不务正业的前端学徒32 分钟前
Threejs,地图标签绘制,碰撞检测逻辑
前端
云烟成雨TD35 分钟前
Spring AI Alibaba 1.x 系列【26】Skills 生命周期深度解析
java·人工智能·spring