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(实参)
相关推荐
尘浮生29 分钟前
Java项目实战II基于微信小程序的南宁周边乡村游平台(开发文档+数据库+源码)
java·开发语言·数据库·spring boot·微信小程序·小程序·maven
wangjing_05223 小时前
C语言练习.if.else语句.strstr
c语言·开发语言
Tony_long74833 小时前
Python学习——字符串操作方法
开发语言·c#
SoraLuna3 小时前
「Mac玩转仓颉内测版26」基础篇6 - 字符类型详解
开发语言·算法·macos·cangjie
T^T尚3 小时前
uniapp H5上传图片前压缩
前端·javascript·uni-app
出逃日志4 小时前
JS的DOM操作和事件监听综合练习 (具备三种功能的轮播图案例)
开发语言·前端·javascript
XIE3924 小时前
如何开发一个脚手架
前端·javascript·git·npm·node.js·github
山猪打不过家猪4 小时前
React(五)——useContecxt/Reducer/useCallback/useRef/React.memo/useMemo
前端·javascript·react.js
前端青山4 小时前
React事件处理机制详解
开发语言·前端·javascript·react.js
科技D人生4 小时前
Vue.js 学习总结(14)—— Vue3 为什么推荐使用 ref 而不是 reactive
前端·vue.js·vue ref·vue ref 响应式·vue reactive