企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
**1.注解释义** ~~~ <bean name="user" class="com.nobb.bean.User"></bean> ~~~ @Component:相当于上面的xml.将该注解修饰的类的对象交给spring容器管理 @Controller : 与@Component一模一样 @Service : 与@Component一模一样 @Repository : 与@Component一模一样 英汉翻译: Component: 组件 Controller: 控制层 WEB Service: 服务层 Service Repository: 仓库 Dao **2.案例展示** 把User对象交给spring管理,并取名为user ~~~ @Repository("user") public class User { ~~~ **3.作用域解释(@Scope)** ~~~ //单例 @Scope("singleton") //原型 @Scope("prototype") ~~~ **4.生命周期相关(@PostConstruct,@PreDestroy)** ``` 初始化方法 <bean init-method="init" > </bean> @PostConstruct : 指定初始化方法,相当于上面的xml ``` ``` 销毁方法 <bean destory-method="destory"></bean> @PreDestroy : 指定销毁方法,相当于上面的xml ``` **5.基本类型赋值** ``` <property name="id" value="1" ></property> :调用set方法注入 @Value("1"):相当于上面的注解 注意了: @Value直接加在成员变量上,会利用反射技术直接对变量赋值,不走set方法 @Value加在set方法上,才是通过set方法赋值 ``` **6.引用类型赋值(@Autowired )** ``` @Autowired: 自动装配,使用该注解会自动扫描spring容器中符合的对象类型(byType),完成注入 如果在容器中存在两个或以上的类型符合的匹配,将会抛出异常. 解决:使用@Qualifier注解,来具体制定使用哪一个对象装配 //byType @Autowired //byName @Qualifier("car2") ``` ``` @Resource: 默认情况下,会按照属性名从容器中查找匹配的对象完成注入(byName). 变量名为car , 就会从容器中查找名为car的对象进行注入. 如果找不到名字对应的对象,那么会通过类型匹配的方式完成注入(byType) 如果使用byType方式,找到多个匹配,仍然会抛出异常. 解决:使用name属性指定具体注入哪一个. //byName @Resource(name="car2") ```