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(实参)
相关推荐
二哈喇子!3 小时前
BOM模型
开发语言·前端·javascript·bom
二哈喇子!3 小时前
Vue2 监听器 watcher
前端·javascript·vue.js
二哈喇子!3 小时前
Java开发工具——IDEA(修改全局配置,提升工作效率)
java·编辑器·intellij-idea
二哈喇子!3 小时前
空指针异常
开发语言
强子感冒了3 小时前
Java网络编程学习笔记,从网络编程三要素到TCP/UDP协议
java·网络·学习
咚为3 小时前
Rust Print 终极指南:从底层原理到全场景实战
开发语言·后端·rust
二哈喇子!3 小时前
SpringBoot项目右上角选择ProjectNameApplication的配置
java·spring boot
%xiao Q3 小时前
GESP C++五级-202406
android·开发语言·c++
Psycho_MrZhang3 小时前
Neo4j Python SDK手册
开发语言·python·neo4j
yanyu-yaya3 小时前
前端面试题
前端·面试·前端框架