注解开发
可以在对应的类中配置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方法会自动装入
标签:xml,JAVA,Spring,public,Bean,dataSource,------,注解,class From: https://www.cnblogs.com/zzRh-5479/p/16739221.html