JAVA Spring学习笔记------注解开发
注解开发
可以在对应的类中配置Bean
具体方法如下:
利用@Component 来声明当前类为Bean
@Component("userDaoimpl")
//Reposity和component效果一样
//spring 对于不同的层提供了不同的方法
//@Repository
public class UserDaoimpl implements UserDao {
private String id;
private String password;
}
同时要在xml文件中配置相关的说明这是一个Bean
<context:component-scan base-package="com.demo.Dao.impl"/>
也就是这样
这样会自动装填Imp目录下所有的Component
如果在Component中没有说明当前类对应的名称
则利用getBean()方法创建对象时,参数为对应的类
spring提供了@Component的三个衍生注解
分别对应三个不用的层次
@Controller 用于表现层Bean定义
@Service 用于业务层Bean定义
@Repository 用于数据层Bean定义
纯注解开发
通过Java类来代替xml文件
我们首先定义一个配置类
名字随便
我这里叫做springConfig
然后我们利用注解来说明这是一个配置类
@Configuration
@Configuration
@ComponentScan("com.demo")
public class SpringConfig {
}
@ComponentScan("com.demo")
这个相当于搜索com.demo下的所有Bean
如果要搜索多个
需要用{}圈起来即可
@Configuration
@ComponentScan({"com.demo",“xxxxx”})
public class SpringConfig {
}
因为xml被取代了
所以我们不再通过xml来获得
ApplicationContext对象
而是通过
AnnotationConfigApplicationContext方法来获得
代码如下
ApplicationContext applicationContext =
new AnnotationConfigApplicationContext(SpringConfig.class);
// ApplicationContext applicationContext =
// new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao = (UserDaoimpl)applicationContext.getBean("userDaoimpl");
如果运行时有
Failed to read candidate component class: file [ ]; nested exception is org.springframework.core.NestedIOException报错
那是因为spring版本太低无法与JDK相兼容导致的
所以要升高spring版本
利用注解完成自动依赖注入
在Service中需要用到Dao对象
刚开始我们是通过New来创建
后来通过xml文件来实现bean的依赖
现在取消了xml文件
我们通过注解来完成依赖
只需要通过@Autowired来完成依赖即可
@Autowired
//利用注释加入依赖 根据类型自动装填
private UserDao userDao;
以上是利用类型自动装配
也可以通过名称来完成装配
@Autowired
//利用名称完成依赖 前提必须有Autowired
@Qualifier("userDaoimpl")
private UserDao userDao;
使用@Value 能够完成简单类型的注入
同样的我们可以把所有的数据放在property文件中
然后在我们的配置类里
利用注解加载property文件即可
例如:
@PropertySource("Jdbc.property")
利用注解管理第三方Bean
以数据库为例首先我们要建立一个Java类让这个类中的方法返回我们想要的类型
public class JdbcConfig {
//首先我们定义一个方法来获得要管理的对象
//然后我们通过@Bean来表示当前方法是的返回值是一个Bean
@Bean
public DataSource getDataSource(){
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://");
dataSource.setUsername("root");
dataSource.setPassword("");
return dataSource;
}
}
然后在我们的配置文件中导入这个类
@Configuration
@ComponentScan("com.demo")
@PropertySource("Jdbc.property")
@Import(JdbcConfig.class)
public class SpringConfig {
}
然后在Main函数中根据类名来通过Bean创建相应的对象就可以了
对于第三方Bean中如果有对其他类的依赖
那么@Bean方法会自动装入
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!