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(实参)
相关推荐
学逆向的1 小时前
C 枚举变量
c语言·开发语言·网络安全
Sakura_j_h_2 小时前
Python 在定时任务里输出 emoji,UnicodeEncodeError 从哪来
开发语言·字符编码·windows·python·定时任务
thefool1122662 小时前
TCP 1
java·1024程序员节
Csvn3 小时前
运行时性能
前端
Never_every993 小时前
位图转矢量工具哪个好?实测抠抠图AI位图转矢量工具
大数据·前端
paopaokaka_luck4 小时前
宠物门店经营管理系统(销售与库存联动、进货自动记账、 退换与退款关联、员工个人业绩、ECharts 经营分析、滞销识别与客户分层、宠物档案年龄计算)
前端·javascript·spring boot·mysql·echarts·mybatis·1024程序员节
金銀銅鐵4 小时前
[Java] 用 GUI 展示 EnumSet 增减元素时的内部变化(下)
java·后端·ai编程
空中湖4 小时前
用 React 写数据大屏:为什么我不建议用图表库
前端·react.js·前端框架
AI人工智能+电脑小能手4 小时前
一次请求打几个下游,这个Java并行任务工具类6个方法按序聚合
java·线程池·并发编程·1024程序员节·批量处理·并行任务
欣欣之王来了6 小时前
原始HTML插值:v-html指令的使用与安全风险
前端·学习·架构·项目·vue3教程