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(实参)